• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2  "version info": {
3    "schema version": 2,
4    "api version": "1.2.158",
5    "comment": "from git branch: github-main commit: 9fd8fd599b47a67b2eb078b2f5c9e6a2adc922a4",
6    "date": "2020-10-19 04:39:54Z"
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, with the exception of structures of type <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a>"
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=\"#VkPhysicalDeviceFragmentDensityMap2PropertiesEXT\">VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapPropertiesEXT\">VkPhysicalDeviceFragmentDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRatePropertiesKHR\">VkPhysicalDeviceFragmentShadingRatePropertiesKHR</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=\"#VkPhysicalDevicePortabilitySubsetPropertiesKHR\">VkPhysicalDevicePortabilitySubsetPropertiesKHR</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_shader_draw_parameters)": [
477        {
478          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-04476",
479          "text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_KHR_shader_draw_parameters\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a> structure, then <code>VkPhysicalDeviceVulkan11Features</code>::<code>shaderDrawParameters</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
480        }
481      ],
482      "(VK_VERSION_1_2)+(VK_KHR_draw_indirect_count)": [
483        {
484          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02831",
485          "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>"
486        }
487      ],
488      "(VK_VERSION_1_2)+(VK_KHR_sampler_mirror_clamp_to_edge)": [
489        {
490          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02832",
491          "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>"
492        }
493      ],
494      "(VK_VERSION_1_2)+(VK_EXT_descriptor_indexing)": [
495        {
496          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02833",
497          "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>"
498        }
499      ],
500      "(VK_VERSION_1_2)+(VK_EXT_sampler_filter_minmax)": [
501        {
502          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02834",
503          "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>"
504        }
505      ],
506      "(VK_VERSION_1_2)+(VK_EXT_shader_viewport_index_layer)": [
507        {
508          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02835",
509          "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>"
510        }
511      ],
512      "(VK_KHR_portability_subset)": [
513        {
514          "vuid": "VUID-VkDeviceCreateInfo-pProperties-04451",
515          "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is included in <code>pProperties</code> of <a href=\"#vkEnumerateDeviceExtensionProperties\">vkEnumerateDeviceExtensionProperties</a>, <code>ppEnabledExtensions</code> <strong class=\"purple\">must</strong> include \"VK_KHR_portability_subset\"."
516        }
517      ],
518      "(VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image)": [
519        {
520          "vuid": "VUID-VkDeviceCreateInfo-shadingRateImage-04478",
521          "text": " If <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> is enabled, <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled"
522        },
523        {
524          "vuid": "VUID-VkDeviceCreateInfo-shadingRateImage-04479",
525          "text": " If <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> is enabled, <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled"
526        },
527        {
528          "vuid": "VUID-VkDeviceCreateInfo-shadingRateImage-04480",
529          "text": " If <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> is enabled, <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled"
530        }
531      ],
532      "(VK_KHR_fragment_shading_rate,VK_EXT_fragment_density_map)": [
533        {
534          "vuid": "VUID-VkDeviceCreateInfo-fragmentDensityMap-04481",
535          "text": " If <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> is enabled, <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled"
536        },
537        {
538          "vuid": "VUID-VkDeviceCreateInfo-fragmentDensityMap-04482",
539          "text": " If <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> is enabled, <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled"
540        },
541        {
542          "vuid": "VUID-VkDeviceCreateInfo-fragmentDensityMap-04483",
543          "text": " If <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> is enabled, <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled"
544        }
545      ],
546      "core": [
547        {
548          "vuid": "VUID-VkDeviceCreateInfo-sType-sType",
549          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO</code>"
550        },
551        {
552          "vuid": "VUID-VkDeviceCreateInfo-pNext-pNext",
553          "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=\"#VkDeviceDeviceMemoryReportCreateInfoEXT\">VkDeviceDeviceMemoryReportCreateInfoEXT</a>, <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=\"#VkPhysicalDevice4444FormatsFeaturesEXT\">VkPhysicalDevice4444FormatsFeaturesEXT</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=\"#VkPhysicalDeviceDeviceMemoryReportFeaturesEXT\">VkPhysicalDeviceDeviceMemoryReportFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDiagnosticsConfigFeaturesNV\">VkPhysicalDeviceDiagnosticsConfigFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicStateFeaturesEXT\">VkPhysicalDeviceExtendedDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2FeaturesEXT\">VkPhysicalDeviceFragmentDensityMap2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateFeaturesKHR\">VkPhysicalDeviceFragmentShadingRateFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeatures\">VkPhysicalDeviceHostQueryResetFeatures</a>, <a href=\"#VkPhysicalDeviceImageRobustnessFeaturesEXT\">VkPhysicalDeviceImageRobustnessFeaturesEXT</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=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</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=\"#VkPhysicalDeviceShaderAtomicFloatFeaturesEXT\">VkPhysicalDeviceShaderAtomicFloatFeaturesEXT</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=\"#VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT\">VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL\">VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\">VkPhysicalDeviceShaderSMBuiltinsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures\">VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures</a>, <a href=\"#VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR\">VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR</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>"
554        },
555        {
556          "vuid": "VUID-VkDeviceCreateInfo-sType-unique",
557          "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=\"#VkDeviceDeviceMemoryReportCreateInfoEXT\">VkDeviceDeviceMemoryReportCreateInfoEXT</a> or <a href=\"#VkDevicePrivateDataCreateInfoEXT\">VkDevicePrivateDataCreateInfoEXT</a>"
558        },
559        {
560          "vuid": "VUID-VkDeviceCreateInfo-flags-zerobitmask",
561          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
562        },
563        {
564          "vuid": "VUID-VkDeviceCreateInfo-pQueueCreateInfos-parameter",
565          "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"
566        },
567        {
568          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledLayerNames-parameter",
569          "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"
570        },
571        {
572          "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-parameter",
573          "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"
574        },
575        {
576          "vuid": "VUID-VkDeviceCreateInfo-pEnabledFeatures-parameter",
577          "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"
578        },
579        {
580          "vuid": "VUID-VkDeviceCreateInfo-queueCreateInfoCount-arraylength",
581          "text": " <code>queueCreateInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
582        }
583      ]
584    },
585    "VkDeviceGroupDeviceCreateInfo": {
586      "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
587        {
588          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00375",
589          "text": " Each element of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be unique"
590        },
591        {
592          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00376",
593          "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>"
594        },
595        {
596          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-physicalDeviceCount-00377",
597          "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>"
598        },
599        {
600          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-sType-sType",
601          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO</code>"
602        },
603        {
604          "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-parameter",
605          "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"
606        }
607      ]
608    },
609    "VkDeviceMemoryOverallocationCreateInfoAMD": {
610      "(VK_AMD_memory_overallocation_behavior)": [
611        {
612          "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-sType-sType",
613          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD</code>"
614        },
615        {
616          "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-overallocationBehavior-parameter",
617          "text": " <code>overallocationBehavior</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMemoryOverallocationBehaviorAMD\">VkMemoryOverallocationBehaviorAMD</a> value"
618        }
619      ]
620    },
621    "VkDeviceDiagnosticsConfigCreateInfoNV": {
622      "(VK_NV_device_diagnostics_config)": [
623        {
624          "vuid": "VUID-VkDeviceDiagnosticsConfigCreateInfoNV-sType-sType",
625          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV</code>"
626        },
627        {
628          "vuid": "VUID-VkDeviceDiagnosticsConfigCreateInfoNV-flags-parameter",
629          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceDiagnosticsConfigFlagBitsNV\">VkDeviceDiagnosticsConfigFlagBitsNV</a> values"
630        }
631      ]
632    },
633    "VkDeviceDeviceMemoryReportCreateInfoEXT": {
634      "(VK_EXT_device_memory_report)": [
635        {
636          "vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-sType-sType",
637          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT</code>"
638        },
639        {
640          "vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-flags-zerobitmask",
641          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
642        },
643        {
644          "vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-pfnUserCallback-parameter",
645          "text": " <code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDeviceMemoryReportCallbackEXT\">PFN_vkDeviceMemoryReportCallbackEXT</a> value"
646        },
647        {
648          "vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-pUserData-parameter",
649          "text": " <code>pUserData</code> <strong class=\"purple\">must</strong> be a pointer value"
650        }
651      ]
652    },
653    "VkDeviceMemoryReportCallbackDataEXT": {
654      "(VK_EXT_device_memory_report)": [
655        {
656          "vuid": "VUID-VkDeviceMemoryReportCallbackDataEXT-sType-sType",
657          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT</code>"
658        },
659        {
660          "vuid": "VUID-VkDeviceMemoryReportCallbackDataEXT-pNext-pNext",
661          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
662        }
663      ]
664    },
665    "VkDevicePrivateDataCreateInfoEXT": {
666      "(VK_EXT_private_data)": [
667        {
668          "vuid": "VUID-VkDevicePrivateDataCreateInfoEXT-sType-sType",
669          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT</code>"
670        }
671      ]
672    },
673    "vkDestroyDevice": {
674      "core": [
675        {
676          "vuid": "VUID-vkDestroyDevice-device-00378",
677          "text": " All child objects created on <code>device</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>device</code>"
678        },
679        {
680          "vuid": "VUID-vkDestroyDevice-device-00379",
681          "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"
682        },
683        {
684          "vuid": "VUID-vkDestroyDevice-device-00380",
685          "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>"
686        },
687        {
688          "vuid": "VUID-vkDestroyDevice-device-parameter",
689          "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"
690        },
691        {
692          "vuid": "VUID-vkDestroyDevice-pAllocator-parameter",
693          "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"
694        }
695      ]
696    },
697    "VkDeviceQueueCreateInfo": {
698      "core": [
699        {
700          "vuid": "VUID-VkDeviceQueueCreateInfo-queueFamilyIndex-00381",
701          "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code>"
702        },
703        {
704          "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-00382",
705          "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]"
706        },
707        {
708          "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-00383",
709          "text": " Each element of <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code> inclusive"
710        },
711        {
712          "vuid": "VUID-VkDeviceQueueCreateInfo-sType-sType",
713          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO</code>"
714        },
715        {
716          "vuid": "VUID-VkDeviceQueueCreateInfo-pNext-pNext",
717          "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>"
718        },
719        {
720          "vuid": "VUID-VkDeviceQueueCreateInfo-sType-unique",
721          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
722        },
723        {
724          "vuid": "VUID-VkDeviceQueueCreateInfo-flags-parameter",
725          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values"
726        },
727        {
728          "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter",
729          "text": " <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCount</code> <code>float</code> values"
730        },
731        {
732          "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-arraylength",
733          "text": " <code>queueCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
734        }
735      ],
736      "(VK_VERSION_1_1)": [
737        {
738          "vuid": "VUID-VkDeviceQueueCreateInfo-flags-02861",
739          "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"
740        }
741      ]
742    },
743    "VkDeviceQueueGlobalPriorityCreateInfoEXT": {
744      "(VK_EXT_global_priority)": [
745        {
746          "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-sType-sType",
747          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT</code>"
748        },
749        {
750          "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-globalPriority-parameter",
751          "text": " <code>globalPriority</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueueGlobalPriorityEXT\">VkQueueGlobalPriorityEXT</a> value"
752        }
753      ]
754    },
755    "vkGetDeviceQueue": {
756      "core": [
757        {
758          "vuid": "VUID-vkGetDeviceQueue-queueFamilyIndex-00384",
759          "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"
760        },
761        {
762          "vuid": "VUID-vkGetDeviceQueue-queueIndex-00385",
763          "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"
764        },
765        {
766          "vuid": "VUID-vkGetDeviceQueue-flags-01841",
767          "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"
768        },
769        {
770          "vuid": "VUID-vkGetDeviceQueue-device-parameter",
771          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
772        },
773        {
774          "vuid": "VUID-vkGetDeviceQueue-pQueue-parameter",
775          "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkQueue\">VkQueue</a> handle"
776        }
777      ]
778    },
779    "vkGetDeviceQueue2": {
780      "(VK_VERSION_1_1)": [
781        {
782          "vuid": "VUID-vkGetDeviceQueue2-device-parameter",
783          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
784        },
785        {
786          "vuid": "VUID-vkGetDeviceQueue2-pQueueInfo-parameter",
787          "text": " <code>pQueueInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceQueueInfo2\">VkDeviceQueueInfo2</a> structure"
788        },
789        {
790          "vuid": "VUID-vkGetDeviceQueue2-pQueue-parameter",
791          "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkQueue\">VkQueue</a> handle"
792        }
793      ]
794    },
795    "VkDeviceQueueInfo2": {
796      "(VK_VERSION_1_1)": [
797        {
798          "vuid": "VUID-VkDeviceQueueInfo2-queueFamilyIndex-01842",
799          "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"
800        },
801        {
802          "vuid": "VUID-VkDeviceQueueInfo2-queueIndex-01843",
803          "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"
804        },
805        {
806          "vuid": "VUID-VkDeviceQueueInfo2-sType-sType",
807          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2</code>"
808        },
809        {
810          "vuid": "VUID-VkDeviceQueueInfo2-pNext-pNext",
811          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
812        },
813        {
814          "vuid": "VUID-VkDeviceQueueInfo2-flags-parameter",
815          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values"
816        }
817      ]
818    },
819    "vkCreateCommandPool": {
820      "core": [
821        {
822          "vuid": "VUID-vkCreateCommandPool-queueFamilyIndex-01937",
823          "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>"
824        },
825        {
826          "vuid": "VUID-vkCreateCommandPool-device-parameter",
827          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
828        },
829        {
830          "vuid": "VUID-vkCreateCommandPool-pCreateInfo-parameter",
831          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure"
832        },
833        {
834          "vuid": "VUID-vkCreateCommandPool-pAllocator-parameter",
835          "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"
836        },
837        {
838          "vuid": "VUID-vkCreateCommandPool-pCommandPool-parameter",
839          "text": " <code>pCommandPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkCommandPool\">VkCommandPool</a> handle"
840        }
841      ]
842    },
843    "VkCommandPoolCreateInfo": {
844      "(VK_VERSION_1_1)": [
845        {
846          "vuid": "VUID-VkCommandPoolCreateInfo-flags-02860",
847          "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"
848        }
849      ],
850      "core": [
851        {
852          "vuid": "VUID-VkCommandPoolCreateInfo-sType-sType",
853          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO</code>"
854        },
855        {
856          "vuid": "VUID-VkCommandPoolCreateInfo-pNext-pNext",
857          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
858        },
859        {
860          "vuid": "VUID-VkCommandPoolCreateInfo-flags-parameter",
861          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolCreateFlagBits\">VkCommandPoolCreateFlagBits</a> values"
862        }
863      ]
864    },
865    "vkTrimCommandPool": {
866      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
867        {
868          "vuid": "VUID-vkTrimCommandPool-device-parameter",
869          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
870        },
871        {
872          "vuid": "VUID-vkTrimCommandPool-commandPool-parameter",
873          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle"
874        },
875        {
876          "vuid": "VUID-vkTrimCommandPool-flags-zerobitmask",
877          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
878        },
879        {
880          "vuid": "VUID-vkTrimCommandPool-commandPool-parent",
881          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
882        }
883      ]
884    },
885    "vkResetCommandPool": {
886      "core": [
887        {
888          "vuid": "VUID-vkResetCommandPool-commandPool-00040",
889          "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>"
890        },
891        {
892          "vuid": "VUID-vkResetCommandPool-device-parameter",
893          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
894        },
895        {
896          "vuid": "VUID-vkResetCommandPool-commandPool-parameter",
897          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle"
898        },
899        {
900          "vuid": "VUID-vkResetCommandPool-flags-parameter",
901          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolResetFlagBits\">VkCommandPoolResetFlagBits</a> values"
902        },
903        {
904          "vuid": "VUID-vkResetCommandPool-commandPool-parent",
905          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
906        }
907      ]
908    },
909    "vkDestroyCommandPool": {
910      "core": [
911        {
912          "vuid": "VUID-vkDestroyCommandPool-commandPool-00041",
913          "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>"
914        },
915        {
916          "vuid": "VUID-vkDestroyCommandPool-commandPool-00042",
917          "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"
918        },
919        {
920          "vuid": "VUID-vkDestroyCommandPool-commandPool-00043",
921          "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>"
922        },
923        {
924          "vuid": "VUID-vkDestroyCommandPool-device-parameter",
925          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
926        },
927        {
928          "vuid": "VUID-vkDestroyCommandPool-commandPool-parameter",
929          "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"
930        },
931        {
932          "vuid": "VUID-vkDestroyCommandPool-pAllocator-parameter",
933          "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"
934        },
935        {
936          "vuid": "VUID-vkDestroyCommandPool-commandPool-parent",
937          "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>"
938        }
939      ]
940    },
941    "vkAllocateCommandBuffers": {
942      "core": [
943        {
944          "vuid": "VUID-vkAllocateCommandBuffers-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-vkAllocateCommandBuffers-pAllocateInfo-parameter",
949          "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCommandBufferAllocateInfo\">VkCommandBufferAllocateInfo</a> structure"
950        },
951        {
952          "vuid": "VUID-vkAllocateCommandBuffers-pCommandBuffers-parameter",
953          "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"
954        },
955        {
956          "vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo::commandBufferCount-arraylength",
957          "text": " <code>pAllocateInfo-&gt;commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
958        }
959      ]
960    },
961    "VkCommandBufferAllocateInfo": {
962      "core": [
963        {
964          "vuid": "VUID-VkCommandBufferAllocateInfo-commandBufferCount-00044",
965          "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
966        },
967        {
968          "vuid": "VUID-VkCommandBufferAllocateInfo-sType-sType",
969          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO</code>"
970        },
971        {
972          "vuid": "VUID-VkCommandBufferAllocateInfo-pNext-pNext",
973          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
974        },
975        {
976          "vuid": "VUID-VkCommandBufferAllocateInfo-commandPool-parameter",
977          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle"
978        },
979        {
980          "vuid": "VUID-VkCommandBufferAllocateInfo-level-parameter",
981          "text": " <code>level</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBufferLevel\">VkCommandBufferLevel</a> value"
982        }
983      ]
984    },
985    "vkResetCommandBuffer": {
986      "core": [
987        {
988          "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00045",
989          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
990        },
991        {
992          "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00046",
993          "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>"
994        },
995        {
996          "vuid": "VUID-vkResetCommandBuffer-commandBuffer-parameter",
997          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
998        },
999        {
1000          "vuid": "VUID-vkResetCommandBuffer-flags-parameter",
1001          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferResetFlagBits\">VkCommandBufferResetFlagBits</a> values"
1002        }
1003      ]
1004    },
1005    "vkFreeCommandBuffers": {
1006      "core": [
1007        {
1008          "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00047",
1009          "text": " All elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
1010        },
1011        {
1012          "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00048",
1013          "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>"
1014        },
1015        {
1016          "vuid": "VUID-vkFreeCommandBuffers-device-parameter",
1017          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1018        },
1019        {
1020          "vuid": "VUID-vkFreeCommandBuffers-commandPool-parameter",
1021          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle"
1022        },
1023        {
1024          "vuid": "VUID-vkFreeCommandBuffers-commandBufferCount-arraylength",
1025          "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
1026        },
1027        {
1028          "vuid": "VUID-vkFreeCommandBuffers-commandPool-parent",
1029          "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
1030        },
1031        {
1032          "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-parent",
1033          "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>"
1034        }
1035      ]
1036    },
1037    "vkBeginCommandBuffer": {
1038      "core": [
1039        {
1040          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00049",
1041          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">recording or pending state</a>"
1042        },
1043        {
1044          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00050",
1045          "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>"
1046        },
1047        {
1048          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00051",
1049          "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"
1050        },
1051        {
1052          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00052",
1053          "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>"
1054        },
1055        {
1056          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-02840",
1057          "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"
1058        },
1059        {
1060          "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-parameter",
1061          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
1062        },
1063        {
1064          "vuid": "VUID-vkBeginCommandBuffer-pBeginInfo-parameter",
1065          "text": " <code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a> structure"
1066        }
1067      ]
1068    },
1069    "VkCommandBufferBeginInfo": {
1070      "core": [
1071        {
1072          "vuid": "VUID-VkCommandBufferBeginInfo-flags-00053",
1073          "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>"
1074        },
1075        {
1076          "vuid": "VUID-VkCommandBufferBeginInfo-flags-00054",
1077          "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>"
1078        },
1079        {
1080          "vuid": "VUID-VkCommandBufferBeginInfo-flags-00055",
1081          "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>"
1082        },
1083        {
1084          "vuid": "VUID-VkCommandBufferBeginInfo-sType-sType",
1085          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO</code>"
1086        },
1087        {
1088          "vuid": "VUID-VkCommandBufferBeginInfo-pNext-pNext",
1089          "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>"
1090        },
1091        {
1092          "vuid": "VUID-VkCommandBufferBeginInfo-sType-unique",
1093          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
1094        },
1095        {
1096          "vuid": "VUID-VkCommandBufferBeginInfo-flags-parameter",
1097          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferUsageFlagBits\">VkCommandBufferUsageFlagBits</a> values"
1098        }
1099      ]
1100    },
1101    "VkCommandBufferInheritanceInfo": {
1102      "core": [
1103        {
1104          "vuid": "VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056",
1105          "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>"
1106        },
1107        {
1108          "vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-00057",
1109          "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"
1110        },
1111        {
1112          "vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-02788",
1113          "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>"
1114        },
1115        {
1116          "vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-02789",
1117          "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"
1118        },
1119        {
1120          "vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058",
1121          "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>"
1122        },
1123        {
1124          "vuid": "VUID-VkCommandBufferInheritanceInfo-sType-sType",
1125          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO</code>"
1126        },
1127        {
1128          "vuid": "VUID-VkCommandBufferInheritanceInfo-pNext-pNext",
1129          "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>"
1130        },
1131        {
1132          "vuid": "VUID-VkCommandBufferInheritanceInfo-sType-unique",
1133          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
1134        },
1135        {
1136          "vuid": "VUID-VkCommandBufferInheritanceInfo-commonparent",
1137          "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>"
1138        }
1139      ]
1140    },
1141    "VkCommandBufferInheritanceConditionalRenderingInfoEXT": {
1142      "(VK_EXT_conditional_rendering)": [
1143        {
1144          "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977",
1145          "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>"
1146        },
1147        {
1148          "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-sType-sType",
1149          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT</code>"
1150        }
1151      ]
1152    },
1153    "VkCommandBufferInheritanceRenderPassTransformInfoQCOM": {
1154      "(VK_QCOM_render_pass_transform)": [
1155        {
1156          "vuid": "VUID-VkCommandBufferInheritanceRenderPassTransformInfoQCOM-transform-02864",
1157          "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>"
1158        },
1159        {
1160          "vuid": "VUID-VkCommandBufferInheritanceRenderPassTransformInfoQCOM-sType-sType",
1161          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM</code>"
1162        }
1163      ]
1164    },
1165    "vkEndCommandBuffer": {
1166      "core": [
1167        {
1168          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00059",
1169          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
1170        },
1171        {
1172          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00060",
1173          "text": " If <code>commandBuffer</code> is a primary command buffer, there <strong class=\"purple\">must</strong> not be an active render pass instance"
1174        },
1175        {
1176          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00061",
1177          "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"
1178        },
1179        {
1180          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-parameter",
1181          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
1182        }
1183      ],
1184      "(VK_EXT_conditional_rendering)": [
1185        {
1186          "vuid": "VUID-vkEndCommandBuffer-None-01978",
1187          "text": " Conditional rendering <strong class=\"purple\">must</strong> not be <a href=\"#active-conditional-rendering\">active</a>"
1188        }
1189      ],
1190      "(VK_EXT_debug_utils)": [
1191        {
1192          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-01815",
1193          "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>"
1194        }
1195      ],
1196      "(VK_EXT_debug_marker)": [
1197        {
1198          "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00062",
1199          "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>"
1200        }
1201      ]
1202    },
1203    "vkQueueSubmit": {
1204      "core": [
1205        {
1206          "vuid": "VUID-vkQueueSubmit-fence-00063",
1207          "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"
1208        },
1209        {
1210          "vuid": "VUID-vkQueueSubmit-fence-00064",
1211          "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"
1212        },
1213        {
1214          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00065",
1215          "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>"
1216        },
1217        {
1218          "vuid": "VUID-vkQueueSubmit-pWaitDstStageMask-00066",
1219          "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>"
1220        },
1221        {
1222          "vuid": "VUID-vkQueueSubmit-pSignalSemaphores-00067",
1223          "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"
1224        },
1225        {
1226          "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00068",
1227          "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"
1228        },
1229        {
1230          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00070",
1231          "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>"
1232        },
1233        {
1234          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00071",
1235          "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>"
1236        },
1237        {
1238          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00072",
1239          "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>"
1240        },
1241        {
1242          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00073",
1243          "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>"
1244        },
1245        {
1246          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00074",
1247          "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"
1248        },
1249        {
1250          "vuid": "VUID-vkQueueSubmit-pSubmits-02207",
1251          "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"
1252        },
1253        {
1254          "vuid": "VUID-vkQueueSubmit-pSubmits-02808",
1255          "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"
1256        },
1257        {
1258          "vuid": "VUID-vkQueueSubmit-queue-parameter",
1259          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
1260        },
1261        {
1262          "vuid": "VUID-vkQueueSubmit-pSubmits-parameter",
1263          "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"
1264        },
1265        {
1266          "vuid": "VUID-vkQueueSubmit-fence-parameter",
1267          "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"
1268        },
1269        {
1270          "vuid": "VUID-vkQueueSubmit-commonparent",
1271          "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>"
1272        }
1273      ],
1274      "!(VK_KHR_timeline_semaphore)": [
1275        {
1276          "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00069",
1277          "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"
1278        }
1279      ],
1280      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
1281        {
1282          "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-03238",
1283          "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"
1284        }
1285      ],
1286      "(VK_KHR_performance_query)": [
1287        {
1288          "vuid": "VUID-vkQueueSubmit-pCommandBuffers-03220",
1289          "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"
1290        }
1291      ]
1292    },
1293    "VkSubmitInfo": {
1294      "core": [
1295        {
1296          "vuid": "VUID-VkSubmitInfo-pCommandBuffers-00075",
1297          "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not have been allocated with <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>"
1298        },
1299        {
1300          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00076",
1301          "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>"
1302        },
1303        {
1304          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00077",
1305          "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>"
1306        },
1307        {
1308          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00078",
1309          "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
1310        },
1311        {
1312          "vuid": "VUID-VkSubmitInfo-sType-sType",
1313          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBMIT_INFO</code>"
1314        },
1315        {
1316          "vuid": "VUID-VkSubmitInfo-pNext-pNext",
1317          "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>"
1318        },
1319        {
1320          "vuid": "VUID-VkSubmitInfo-sType-unique",
1321          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
1322        },
1323        {
1324          "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-parameter",
1325          "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"
1326        },
1327        {
1328          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-parameter",
1329          "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"
1330        },
1331        {
1332          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-requiredbitmask",
1333          "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
1334        },
1335        {
1336          "vuid": "VUID-VkSubmitInfo-pCommandBuffers-parameter",
1337          "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"
1338        },
1339        {
1340          "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-parameter",
1341          "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"
1342        },
1343        {
1344          "vuid": "VUID-VkSubmitInfo-commonparent",
1345          "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>"
1346        }
1347      ],
1348      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
1349        {
1350          "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-03239",
1351          "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"
1352        },
1353        {
1354          "vuid": "VUID-VkSubmitInfo-pNext-03240",
1355          "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>"
1356        },
1357        {
1358          "vuid": "VUID-VkSubmitInfo-pNext-03241",
1359          "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>"
1360        },
1361        {
1362          "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-03242",
1363          "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"
1364        },
1365        {
1366          "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-03243",
1367          "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>"
1368        },
1369        {
1370          "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-03244",
1371          "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>"
1372        }
1373      ],
1374      "(VK_NV_mesh_shader)": [
1375        {
1376          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02089",
1377          "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>"
1378        },
1379        {
1380          "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02090",
1381          "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>"
1382        }
1383      ],
1384      "(VK_VERSION_1_1)": [
1385        {
1386          "vuid": "VUID-VkSubmitInfo-pNext-04120",
1387          "text": " If the <code>pNext</code> chain of this structure does not include a <code>VkProtectedSubmitInfo</code> structure with <code>protectedSubmit</code> set to <code>VK_TRUE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an unprotected command buffer"
1388        },
1389        {
1390          "vuid": "VUID-VkSubmitInfo-pNext-04148",
1391          "text": " If the <code>pNext</code> chain of this structure includes a <code>VkProtectedSubmitInfo</code> structure with <code>protectedSubmit</code> set to <code>VK_TRUE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an protected command buffer"
1392        }
1393      ]
1394    },
1395    "VkTimelineSemaphoreSubmitInfo": {
1396      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
1397        {
1398          "vuid": "VUID-VkTimelineSemaphoreSubmitInfo-sType-sType",
1399          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO</code>"
1400        },
1401        {
1402          "vuid": "VUID-VkTimelineSemaphoreSubmitInfo-pWaitSemaphoreValues-parameter",
1403          "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"
1404        },
1405        {
1406          "vuid": "VUID-VkTimelineSemaphoreSubmitInfo-pSignalSemaphoreValues-parameter",
1407          "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"
1408        }
1409      ]
1410    },
1411    "VkD3D12FenceSubmitInfoKHR": {
1412      "(VK_KHR_external_semaphore_win32)": [
1413        {
1414          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-waitSemaphoreValuesCount-00079",
1415          "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"
1416        },
1417        {
1418          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-signalSemaphoreValuesCount-00080",
1419          "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"
1420        },
1421        {
1422          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-sType-sType",
1423          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR</code>"
1424        },
1425        {
1426          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pWaitSemaphoreValues-parameter",
1427          "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"
1428        },
1429        {
1430          "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pSignalSemaphoreValues-parameter",
1431          "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"
1432        }
1433      ]
1434    },
1435    "VkWin32KeyedMutexAcquireReleaseInfoKHR": {
1436      "(VK_KHR_win32_keyed_mutex)": [
1437        {
1438          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-00081",
1439          "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>"
1440        },
1441        {
1442          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-sType-sType",
1443          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR</code>"
1444        },
1445        {
1446          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-parameter",
1447          "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"
1448        },
1449        {
1450          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireKeys-parameter",
1451          "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"
1452        },
1453        {
1454          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireTimeouts-parameter",
1455          "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"
1456        },
1457        {
1458          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseSyncs-parameter",
1459          "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"
1460        },
1461        {
1462          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseKeys-parameter",
1463          "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"
1464        },
1465        {
1466          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-commonparent",
1467          "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>"
1468        }
1469      ]
1470    },
1471    "VkWin32KeyedMutexAcquireReleaseInfoNV": {
1472      "(VK_NV_win32_keyed_mutex)": [
1473        {
1474          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-sType-sType",
1475          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV</code>"
1476        },
1477        {
1478          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireSyncs-parameter",
1479          "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"
1480        },
1481        {
1482          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireKeys-parameter",
1483          "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"
1484        },
1485        {
1486          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireTimeoutMilliseconds-parameter",
1487          "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"
1488        },
1489        {
1490          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseSyncs-parameter",
1491          "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"
1492        },
1493        {
1494          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseKeys-parameter",
1495          "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"
1496        },
1497        {
1498          "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-commonparent",
1499          "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>"
1500        }
1501      ]
1502    },
1503    "VkProtectedSubmitInfo": {
1504      "(VK_VERSION_1_1)": [
1505        {
1506          "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01816",
1507          "text": " If the protected memory feature is not enabled, <code>protectedSubmit</code> <strong class=\"purple\">must</strong> not be <code>VK_TRUE</code>"
1508        },
1509        {
1510          "vuid": "VUID-VkProtectedSubmitInfo-sType-sType",
1511          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO</code>"
1512        }
1513      ]
1514    },
1515    "VkDeviceGroupSubmitInfo": {
1516      "(VK_VERSION_1_1,VK_KHR_device_group)": [
1517        {
1518          "vuid": "VUID-VkDeviceGroupSubmitInfo-waitSemaphoreCount-00082",
1519          "text": " <code>waitSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>waitSemaphoreCount</code>"
1520        },
1521        {
1522          "vuid": "VUID-VkDeviceGroupSubmitInfo-commandBufferCount-00083",
1523          "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>commandBufferCount</code>"
1524        },
1525        {
1526          "vuid": "VUID-VkDeviceGroupSubmitInfo-signalSemaphoreCount-00084",
1527          "text": " <code>signalSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>signalSemaphoreCount</code>"
1528        },
1529        {
1530          "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-00085",
1531          "text": " All elements of <code>pWaitSemaphoreDeviceIndices</code> and <code>pSignalSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
1532        },
1533        {
1534          "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-00086",
1535          "text": " All elements of <code>pCommandBufferDeviceMasks</code> <strong class=\"purple\">must</strong> be valid device masks"
1536        },
1537        {
1538          "vuid": "VUID-VkDeviceGroupSubmitInfo-sType-sType",
1539          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO</code>"
1540        },
1541        {
1542          "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-parameter",
1543          "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"
1544        },
1545        {
1546          "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-parameter",
1547          "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"
1548        },
1549        {
1550          "vuid": "VUID-VkDeviceGroupSubmitInfo-pSignalSemaphoreDeviceIndices-parameter",
1551          "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"
1552        }
1553      ]
1554    },
1555    "VkPerformanceQuerySubmitInfoKHR": {
1556      "(VK_KHR_performance_query)": [
1557        {
1558          "vuid": "VUID-VkPerformanceQuerySubmitInfoKHR-counterPassIndex-03221",
1559          "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>"
1560        },
1561        {
1562          "vuid": "VUID-VkPerformanceQuerySubmitInfoKHR-sType-sType",
1563          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR</code>"
1564        }
1565      ]
1566    },
1567    "vkCmdExecuteCommands": {
1568      "core": [
1569        {
1570          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00088",
1571          "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>"
1572        },
1573        {
1574          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00089",
1575          "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>"
1576        },
1577        {
1578          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00091",
1579          "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>"
1580        },
1581        {
1582          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00092",
1583          "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>"
1584        },
1585        {
1586          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00093",
1587          "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>"
1588        },
1589        {
1590          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00094",
1591          "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"
1592        },
1593        {
1594          "vuid": "VUID-vkCmdExecuteCommands-contents-00095",
1595          "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>"
1596        },
1597        {
1598          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00096",
1599          "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>"
1600        },
1601        {
1602          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00097",
1603          "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"
1604        },
1605        {
1606          "vuid": "VUID-vkCmdExecuteCommands-pInheritanceInfo-00098",
1607          "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"
1608        },
1609        {
1610          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00099",
1611          "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"
1612        },
1613        {
1614          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00100",
1615          "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>"
1616        },
1617        {
1618          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00101",
1619          "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>"
1620        },
1621        {
1622          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00102",
1623          "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>"
1624        },
1625        {
1626          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00103",
1627          "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"
1628        },
1629        {
1630          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00104",
1631          "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"
1632        },
1633        {
1634          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00105",
1635          "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>"
1636        },
1637        {
1638          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-parameter",
1639          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
1640        },
1641        {
1642          "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-parameter",
1643          "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"
1644        },
1645        {
1646          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-recording",
1647          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
1648        },
1649        {
1650          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-cmdpool",
1651          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
1652        },
1653        {
1654          "vuid": "VUID-vkCmdExecuteCommands-bufferlevel",
1655          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
1656        },
1657        {
1658          "vuid": "VUID-vkCmdExecuteCommands-commandBufferCount-arraylength",
1659          "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
1660        },
1661        {
1662          "vuid": "VUID-vkCmdExecuteCommands-commonparent",
1663          "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>"
1664        }
1665      ],
1666      "(VK_QCOM_render_pass_transform)": [
1667        {
1668          "vuid": "VUID-vkCmdExecuteCommands-pNext-02865",
1669          "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>"
1670        },
1671        {
1672          "vuid": "VUID-vkCmdExecuteCommands-pNext-02866",
1673          "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>"
1674        },
1675        {
1676          "vuid": "VUID-vkCmdExecuteCommands-pNext-02867",
1677          "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>"
1678        }
1679      ],
1680      "(VK_VERSION_1_1)": [
1681        {
1682          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01820",
1683          "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"
1684        },
1685        {
1686          "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01821",
1687          "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"
1688        }
1689      ],
1690      "(VK_EXT_transform_feedback)": [
1691        {
1692          "vuid": "VUID-vkCmdExecuteCommands-None-02286",
1693          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
1694        }
1695      ]
1696    },
1697    "VkDeviceGroupCommandBufferBeginInfo": {
1698      "(VK_VERSION_1_1,VK_KHR_device_group)": [
1699        {
1700          "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00106",
1701          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
1702        },
1703        {
1704          "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00107",
1705          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
1706        },
1707        {
1708          "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-sType-sType",
1709          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO</code>"
1710        }
1711      ]
1712    },
1713    "vkCmdSetDeviceMask": {
1714      "(VK_VERSION_1_1,VK_KHR_device_group)": [
1715        {
1716          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00108",
1717          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
1718        },
1719        {
1720          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00109",
1721          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
1722        },
1723        {
1724          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00110",
1725          "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"
1726        },
1727        {
1728          "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00111",
1729          "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"
1730        },
1731        {
1732          "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-parameter",
1733          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
1734        },
1735        {
1736          "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-recording",
1737          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
1738        },
1739        {
1740          "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-cmdpool",
1741          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
1742        }
1743      ]
1744    },
1745    "vkCreateFence": {
1746      "core": [
1747        {
1748          "vuid": "VUID-vkCreateFence-device-parameter",
1749          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1750        },
1751        {
1752          "vuid": "VUID-vkCreateFence-pCreateInfo-parameter",
1753          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a> structure"
1754        },
1755        {
1756          "vuid": "VUID-vkCreateFence-pAllocator-parameter",
1757          "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"
1758        },
1759        {
1760          "vuid": "VUID-vkCreateFence-pFence-parameter",
1761          "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFence\">VkFence</a> handle"
1762        }
1763      ]
1764    },
1765    "VkFenceCreateInfo": {
1766      "core": [
1767        {
1768          "vuid": "VUID-VkFenceCreateInfo-sType-sType",
1769          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_CREATE_INFO</code>"
1770        },
1771        {
1772          "vuid": "VUID-VkFenceCreateInfo-pNext-pNext",
1773          "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>"
1774        },
1775        {
1776          "vuid": "VUID-VkFenceCreateInfo-sType-unique",
1777          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
1778        },
1779        {
1780          "vuid": "VUID-VkFenceCreateInfo-flags-parameter",
1781          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceCreateFlagBits\">VkFenceCreateFlagBits</a> values"
1782        }
1783      ]
1784    },
1785    "VkExportFenceCreateInfo": {
1786      "(VK_VERSION_1_1,VK_KHR_external_fence)": [
1787        {
1788          "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-01446",
1789          "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>"
1790        },
1791        {
1792          "vuid": "VUID-VkExportFenceCreateInfo-sType-sType",
1793          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO</code>"
1794        },
1795        {
1796          "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-parameter",
1797          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> values"
1798        }
1799      ]
1800    },
1801    "VkExportFenceWin32HandleInfoKHR": {
1802      "(VK_KHR_external_fence_win32)": [
1803        {
1804          "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-handleTypes-01447",
1805          "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>"
1806        },
1807        {
1808          "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-sType-sType",
1809          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>"
1810        },
1811        {
1812          "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-pAttributes-parameter",
1813          "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"
1814        }
1815      ]
1816    },
1817    "vkGetFenceWin32HandleKHR": {
1818      "(VK_KHR_external_fence_win32)": [
1819        {
1820          "vuid": "VUID-vkGetFenceWin32HandleKHR-device-parameter",
1821          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1822        },
1823        {
1824          "vuid": "VUID-vkGetFenceWin32HandleKHR-pGetWin32HandleInfo-parameter",
1825          "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFenceGetWin32HandleInfoKHR\">VkFenceGetWin32HandleInfoKHR</a> structure"
1826        },
1827        {
1828          "vuid": "VUID-vkGetFenceWin32HandleKHR-pHandle-parameter",
1829          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
1830        }
1831      ]
1832    },
1833    "VkFenceGetWin32HandleInfoKHR": {
1834      "(VK_KHR_external_fence_win32)": [
1835        {
1836          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01448",
1837          "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"
1838        },
1839        {
1840          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01449",
1841          "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>"
1842        },
1843        {
1844          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-01450",
1845          "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>"
1846        },
1847        {
1848          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01451",
1849          "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"
1850        },
1851        {
1852          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01452",
1853          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle"
1854        },
1855        {
1856          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-sType-sType",
1857          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR</code>"
1858        },
1859        {
1860          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-pNext-pNext",
1861          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1862        },
1863        {
1864          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-parameter",
1865          "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle"
1866        },
1867        {
1868          "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter",
1869          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
1870        }
1871      ]
1872    },
1873    "vkGetFenceFdKHR": {
1874      "(VK_KHR_external_fence_fd)": [
1875        {
1876          "vuid": "VUID-vkGetFenceFdKHR-device-parameter",
1877          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1878        },
1879        {
1880          "vuid": "VUID-vkGetFenceFdKHR-pGetFdInfo-parameter",
1881          "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFenceGetFdInfoKHR\">VkFenceGetFdInfoKHR</a> structure"
1882        },
1883        {
1884          "vuid": "VUID-vkGetFenceFdKHR-pFd-parameter",
1885          "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value"
1886        }
1887      ]
1888    },
1889    "VkFenceGetFdInfoKHR": {
1890      "(VK_KHR_external_fence_fd)": [
1891        {
1892          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01453",
1893          "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"
1894        },
1895        {
1896          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01454",
1897          "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"
1898        },
1899        {
1900          "vuid": "VUID-VkFenceGetFdInfoKHR-fence-01455",
1901          "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>"
1902        },
1903        {
1904          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01456",
1905          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle"
1906        },
1907        {
1908          "vuid": "VUID-VkFenceGetFdInfoKHR-sType-sType",
1909          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR</code>"
1910        },
1911        {
1912          "vuid": "VUID-VkFenceGetFdInfoKHR-pNext-pNext",
1913          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1914        },
1915        {
1916          "vuid": "VUID-VkFenceGetFdInfoKHR-fence-parameter",
1917          "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle"
1918        },
1919        {
1920          "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-parameter",
1921          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
1922        }
1923      ]
1924    },
1925    "vkDestroyFence": {
1926      "core": [
1927        {
1928          "vuid": "VUID-vkDestroyFence-fence-01120",
1929          "text": " All <a href=\"#devsandqueues-submission\">queue submission</a> commands that refer to <code>fence</code> <strong class=\"purple\">must</strong> have completed execution"
1930        },
1931        {
1932          "vuid": "VUID-vkDestroyFence-fence-01121",
1933          "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"
1934        },
1935        {
1936          "vuid": "VUID-vkDestroyFence-fence-01122",
1937          "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>"
1938        },
1939        {
1940          "vuid": "VUID-vkDestroyFence-device-parameter",
1941          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1942        },
1943        {
1944          "vuid": "VUID-vkDestroyFence-fence-parameter",
1945          "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"
1946        },
1947        {
1948          "vuid": "VUID-vkDestroyFence-pAllocator-parameter",
1949          "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"
1950        },
1951        {
1952          "vuid": "VUID-vkDestroyFence-fence-parent",
1953          "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>"
1954        }
1955      ]
1956    },
1957    "vkGetFenceStatus": {
1958      "core": [
1959        {
1960          "vuid": "VUID-vkGetFenceStatus-device-parameter",
1961          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1962        },
1963        {
1964          "vuid": "VUID-vkGetFenceStatus-fence-parameter",
1965          "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle"
1966        },
1967        {
1968          "vuid": "VUID-vkGetFenceStatus-fence-parent",
1969          "text": " <code>fence</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
1970        }
1971      ]
1972    },
1973    "vkResetFences": {
1974      "core": [
1975        {
1976          "vuid": "VUID-vkResetFences-pFences-01123",
1977          "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"
1978        },
1979        {
1980          "vuid": "VUID-vkResetFences-device-parameter",
1981          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
1982        },
1983        {
1984          "vuid": "VUID-vkResetFences-pFences-parameter",
1985          "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"
1986        },
1987        {
1988          "vuid": "VUID-vkResetFences-fenceCount-arraylength",
1989          "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
1990        },
1991        {
1992          "vuid": "VUID-vkResetFences-pFences-parent",
1993          "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
1994        }
1995      ]
1996    },
1997    "vkWaitForFences": {
1998      "core": [
1999        {
2000          "vuid": "VUID-vkWaitForFences-device-parameter",
2001          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2002        },
2003        {
2004          "vuid": "VUID-vkWaitForFences-pFences-parameter",
2005          "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"
2006        },
2007        {
2008          "vuid": "VUID-vkWaitForFences-fenceCount-arraylength",
2009          "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
2010        },
2011        {
2012          "vuid": "VUID-vkWaitForFences-pFences-parent",
2013          "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2014        }
2015      ]
2016    },
2017    "vkRegisterDeviceEventEXT": {
2018      "(VK_EXT_display_control)": [
2019        {
2020          "vuid": "VUID-vkRegisterDeviceEventEXT-device-parameter",
2021          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2022        },
2023        {
2024          "vuid": "VUID-vkRegisterDeviceEventEXT-pDeviceEventInfo-parameter",
2025          "text": " <code>pDeviceEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceEventInfoEXT\">VkDeviceEventInfoEXT</a> structure"
2026        },
2027        {
2028          "vuid": "VUID-vkRegisterDeviceEventEXT-pAllocator-parameter",
2029          "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"
2030        },
2031        {
2032          "vuid": "VUID-vkRegisterDeviceEventEXT-pFence-parameter",
2033          "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFence\">VkFence</a> handle"
2034        }
2035      ]
2036    },
2037    "VkDeviceEventInfoEXT": {
2038      "(VK_EXT_display_control)": [
2039        {
2040          "vuid": "VUID-VkDeviceEventInfoEXT-sType-sType",
2041          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT</code>"
2042        },
2043        {
2044          "vuid": "VUID-VkDeviceEventInfoEXT-pNext-pNext",
2045          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2046        },
2047        {
2048          "vuid": "VUID-VkDeviceEventInfoEXT-deviceEvent-parameter",
2049          "text": " <code>deviceEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceEventTypeEXT\">VkDeviceEventTypeEXT</a> value"
2050        }
2051      ]
2052    },
2053    "vkRegisterDisplayEventEXT": {
2054      "(VK_EXT_display_control)": [
2055        {
2056          "vuid": "VUID-vkRegisterDisplayEventEXT-device-parameter",
2057          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2058        },
2059        {
2060          "vuid": "VUID-vkRegisterDisplayEventEXT-display-parameter",
2061          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
2062        },
2063        {
2064          "vuid": "VUID-vkRegisterDisplayEventEXT-pDisplayEventInfo-parameter",
2065          "text": " <code>pDisplayEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayEventInfoEXT\">VkDisplayEventInfoEXT</a> structure"
2066        },
2067        {
2068          "vuid": "VUID-vkRegisterDisplayEventEXT-pAllocator-parameter",
2069          "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"
2070        },
2071        {
2072          "vuid": "VUID-vkRegisterDisplayEventEXT-pFence-parameter",
2073          "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFence\">VkFence</a> handle"
2074        },
2075        {
2076          "vuid": "VUID-vkRegisterDisplayEventEXT-commonparent",
2077          "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>"
2078        }
2079      ]
2080    },
2081    "VkDisplayEventInfoEXT": {
2082      "(VK_EXT_display_control)": [
2083        {
2084          "vuid": "VUID-VkDisplayEventInfoEXT-sType-sType",
2085          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT</code>"
2086        },
2087        {
2088          "vuid": "VUID-VkDisplayEventInfoEXT-pNext-pNext",
2089          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2090        },
2091        {
2092          "vuid": "VUID-VkDisplayEventInfoEXT-displayEvent-parameter",
2093          "text": " <code>displayEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayEventTypeEXT\">VkDisplayEventTypeEXT</a> value"
2094        }
2095      ]
2096    },
2097    "vkImportFenceWin32HandleKHR": {
2098      "(VK_KHR_external_fence_win32)": [
2099        {
2100          "vuid": "VUID-vkImportFenceWin32HandleKHR-fence-04448",
2101          "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"
2102        },
2103        {
2104          "vuid": "VUID-vkImportFenceWin32HandleKHR-device-parameter",
2105          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2106        },
2107        {
2108          "vuid": "VUID-vkImportFenceWin32HandleKHR-pImportFenceWin32HandleInfo-parameter",
2109          "text": " <code>pImportFenceWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportFenceWin32HandleInfoKHR\">VkImportFenceWin32HandleInfoKHR</a> structure"
2110        }
2111      ]
2112    },
2113    "VkImportFenceWin32HandleInfoKHR": {
2114      "(VK_KHR_external_fence_win32)": [
2115        {
2116          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01457",
2117          "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"
2118        },
2119        {
2120          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459",
2121          "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>"
2122        },
2123        {
2124          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01460",
2125          "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>"
2126        },
2127        {
2128          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01461",
2129          "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>"
2130        },
2131        {
2132          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01462",
2133          "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2134        },
2135        {
2136          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01539",
2137          "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>"
2138        },
2139        {
2140          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-name-01540",
2141          "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>"
2142        },
2143        {
2144          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-sType-sType",
2145          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>"
2146        },
2147        {
2148          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-pNext-pNext",
2149          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2150        },
2151        {
2152          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-fence-parameter",
2153          "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle"
2154        },
2155        {
2156          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-flags-parameter",
2157          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values"
2158        },
2159        {
2160          "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-parameter",
2161          "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"
2162        }
2163      ]
2164    },
2165    "vkImportFenceFdKHR": {
2166      "(VK_KHR_external_fence_fd)": [
2167        {
2168          "vuid": "VUID-vkImportFenceFdKHR-fence-01463",
2169          "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"
2170        },
2171        {
2172          "vuid": "VUID-vkImportFenceFdKHR-device-parameter",
2173          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2174        },
2175        {
2176          "vuid": "VUID-vkImportFenceFdKHR-pImportFenceFdInfo-parameter",
2177          "text": " <code>pImportFenceFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportFenceFdInfoKHR\">VkImportFenceFdInfoKHR</a> structure"
2178        }
2179      ]
2180    },
2181    "VkImportFenceFdInfoKHR": {
2182      "(VK_KHR_external_fence_fd)": [
2183        {
2184          "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-01464",
2185          "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"
2186        },
2187        {
2188          "vuid": "VUID-VkImportFenceFdInfoKHR-fd-01541",
2189          "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>"
2190        },
2191        {
2192          "vuid": "VUID-VkImportFenceFdInfoKHR-sType-sType",
2193          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR</code>"
2194        },
2195        {
2196          "vuid": "VUID-VkImportFenceFdInfoKHR-pNext-pNext",
2197          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2198        },
2199        {
2200          "vuid": "VUID-VkImportFenceFdInfoKHR-fence-parameter",
2201          "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle"
2202        },
2203        {
2204          "vuid": "VUID-VkImportFenceFdInfoKHR-flags-parameter",
2205          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values"
2206        },
2207        {
2208          "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-parameter",
2209          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
2210        }
2211      ]
2212    },
2213    "vkCreateSemaphore": {
2214      "core": [
2215        {
2216          "vuid": "VUID-vkCreateSemaphore-device-parameter",
2217          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2218        },
2219        {
2220          "vuid": "VUID-vkCreateSemaphore-pCreateInfo-parameter",
2221          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a> structure"
2222        },
2223        {
2224          "vuid": "VUID-vkCreateSemaphore-pAllocator-parameter",
2225          "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"
2226        },
2227        {
2228          "vuid": "VUID-vkCreateSemaphore-pSemaphore-parameter",
2229          "text": " <code>pSemaphore</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
2230        }
2231      ]
2232    },
2233    "VkSemaphoreCreateInfo": {
2234      "core": [
2235        {
2236          "vuid": "VUID-VkSemaphoreCreateInfo-sType-sType",
2237          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO</code>"
2238        },
2239        {
2240          "vuid": "VUID-VkSemaphoreCreateInfo-pNext-pNext",
2241          "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>"
2242        },
2243        {
2244          "vuid": "VUID-VkSemaphoreCreateInfo-sType-unique",
2245          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
2246        },
2247        {
2248          "vuid": "VUID-VkSemaphoreCreateInfo-flags-zerobitmask",
2249          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
2250        }
2251      ]
2252    },
2253    "VkSemaphoreTypeCreateInfo": {
2254      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2255        {
2256          "vuid": "VUID-VkSemaphoreTypeCreateInfo-sType-sType",
2257          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO</code>"
2258        },
2259        {
2260          "vuid": "VUID-VkSemaphoreTypeCreateInfo-semaphoreType-parameter",
2261          "text": " <code>semaphoreType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> value"
2262        },
2263        {
2264          "vuid": "VUID-VkSemaphoreTypeCreateInfo-timelineSemaphore-03252",
2265          "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>"
2266        },
2267        {
2268          "vuid": "VUID-VkSemaphoreTypeCreateInfo-semaphoreType-03279",
2269          "text": " If <code>semaphoreType</code> is <code>VK_SEMAPHORE_TYPE_BINARY</code>, <code>initialValue</code> <strong class=\"purple\">must</strong> be zero"
2270        }
2271      ]
2272    },
2273    "VkExportSemaphoreCreateInfo": {
2274      "(VK_VERSION_1_1,VK_KHR_external_semaphore)": [
2275        {
2276          "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-01124",
2277          "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>"
2278        },
2279        {
2280          "vuid": "VUID-VkExportSemaphoreCreateInfo-sType-sType",
2281          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO</code>"
2282        },
2283        {
2284          "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-parameter",
2285          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> values"
2286        }
2287      ]
2288    },
2289    "VkExportSemaphoreWin32HandleInfoKHR": {
2290      "(VK_KHR_external_semaphore_win32)": [
2291        {
2292          "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-handleTypes-01125",
2293          "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>"
2294        },
2295        {
2296          "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-sType-sType",
2297          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>"
2298        },
2299        {
2300          "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-pAttributes-parameter",
2301          "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"
2302        }
2303      ]
2304    },
2305    "vkGetSemaphoreWin32HandleKHR": {
2306      "(VK_KHR_external_semaphore_win32)": [
2307        {
2308          "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-device-parameter",
2309          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2310        },
2311        {
2312          "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pGetWin32HandleInfo-parameter",
2313          "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreGetWin32HandleInfoKHR\">VkSemaphoreGetWin32HandleInfoKHR</a> structure"
2314        },
2315        {
2316          "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pHandle-parameter",
2317          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
2318        }
2319      ]
2320    },
2321    "VkSemaphoreGetWin32HandleInfoKHR": {
2322      "(VK_KHR_external_semaphore_win32)": [
2323        {
2324          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01126",
2325          "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"
2326        },
2327        {
2328          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01127",
2329          "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>"
2330        },
2331        {
2332          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-01128",
2333          "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>"
2334        },
2335        {
2336          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01129",
2337          "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>"
2338        },
2339        {
2340          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01130",
2341          "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"
2342        },
2343        {
2344          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01131",
2345          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle"
2346        },
2347        {
2348          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-sType-sType",
2349          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR</code>"
2350        },
2351        {
2352          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-pNext-pNext",
2353          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2354        },
2355        {
2356          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-parameter",
2357          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
2358        },
2359        {
2360          "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter",
2361          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
2362        }
2363      ]
2364    },
2365    "vkGetSemaphoreFdKHR": {
2366      "(VK_KHR_external_semaphore_fd)": [
2367        {
2368          "vuid": "VUID-vkGetSemaphoreFdKHR-device-parameter",
2369          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2370        },
2371        {
2372          "vuid": "VUID-vkGetSemaphoreFdKHR-pGetFdInfo-parameter",
2373          "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreGetFdInfoKHR\">VkSemaphoreGetFdInfoKHR</a> structure"
2374        },
2375        {
2376          "vuid": "VUID-vkGetSemaphoreFdKHR-pFd-parameter",
2377          "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value"
2378        }
2379      ]
2380    },
2381    "VkSemaphoreGetFdInfoKHR": {
2382      "(VK_KHR_external_semaphore_fd)": [
2383        {
2384          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01132",
2385          "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"
2386        },
2387        {
2388          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-01133",
2389          "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>"
2390        },
2391        {
2392          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01134",
2393          "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>"
2394        },
2395        {
2396          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01135",
2397          "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"
2398        },
2399        {
2400          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01136",
2401          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle"
2402        },
2403        {
2404          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-sType-sType",
2405          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR</code>"
2406        },
2407        {
2408          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-pNext-pNext",
2409          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2410        },
2411        {
2412          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-parameter",
2413          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
2414        },
2415        {
2416          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter",
2417          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
2418        }
2419      ],
2420      "(VK_KHR_external_semaphore_fd)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2421        {
2422          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-03253",
2423          "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>"
2424        },
2425        {
2426          "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-03254",
2427          "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"
2428        }
2429      ]
2430    },
2431    "vkDestroySemaphore": {
2432      "core": [
2433        {
2434          "vuid": "VUID-vkDestroySemaphore-semaphore-01137",
2435          "text": " All submitted batches that refer to <code>semaphore</code> <strong class=\"purple\">must</strong> have completed execution"
2436        },
2437        {
2438          "vuid": "VUID-vkDestroySemaphore-semaphore-01138",
2439          "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"
2440        },
2441        {
2442          "vuid": "VUID-vkDestroySemaphore-semaphore-01139",
2443          "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>"
2444        },
2445        {
2446          "vuid": "VUID-vkDestroySemaphore-device-parameter",
2447          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2448        },
2449        {
2450          "vuid": "VUID-vkDestroySemaphore-semaphore-parameter",
2451          "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"
2452        },
2453        {
2454          "vuid": "VUID-vkDestroySemaphore-pAllocator-parameter",
2455          "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"
2456        },
2457        {
2458          "vuid": "VUID-vkDestroySemaphore-semaphore-parent",
2459          "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>"
2460        }
2461      ]
2462    },
2463    "vkGetSemaphoreCounterValue": {
2464      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2465        {
2466          "vuid": "VUID-vkGetSemaphoreCounterValue-semaphore-03255",
2467          "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>"
2468        },
2469        {
2470          "vuid": "VUID-vkGetSemaphoreCounterValue-device-parameter",
2471          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2472        },
2473        {
2474          "vuid": "VUID-vkGetSemaphoreCounterValue-semaphore-parameter",
2475          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
2476        },
2477        {
2478          "vuid": "VUID-vkGetSemaphoreCounterValue-pValue-parameter",
2479          "text": " <code>pValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
2480        },
2481        {
2482          "vuid": "VUID-vkGetSemaphoreCounterValue-semaphore-parent",
2483          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2484        }
2485      ]
2486    },
2487    "vkWaitSemaphores": {
2488      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2489        {
2490          "vuid": "VUID-vkWaitSemaphores-device-parameter",
2491          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2492        },
2493        {
2494          "vuid": "VUID-vkWaitSemaphores-pWaitInfo-parameter",
2495          "text": " <code>pWaitInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreWaitInfo\">VkSemaphoreWaitInfo</a> structure"
2496        }
2497      ]
2498    },
2499    "VkSemaphoreWaitInfo": {
2500      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2501        {
2502          "vuid": "VUID-VkSemaphoreWaitInfo-pSemaphores-03256",
2503          "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>"
2504        },
2505        {
2506          "vuid": "VUID-VkSemaphoreWaitInfo-sType-sType",
2507          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO</code>"
2508        },
2509        {
2510          "vuid": "VUID-VkSemaphoreWaitInfo-pNext-pNext",
2511          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2512        },
2513        {
2514          "vuid": "VUID-VkSemaphoreWaitInfo-flags-parameter",
2515          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreWaitFlagBits\">VkSemaphoreWaitFlagBits</a> values"
2516        },
2517        {
2518          "vuid": "VUID-VkSemaphoreWaitInfo-pSemaphores-parameter",
2519          "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"
2520        },
2521        {
2522          "vuid": "VUID-VkSemaphoreWaitInfo-pValues-parameter",
2523          "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"
2524        },
2525        {
2526          "vuid": "VUID-VkSemaphoreWaitInfo-semaphoreCount-arraylength",
2527          "text": " <code>semaphoreCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
2528        }
2529      ]
2530    },
2531    "vkSignalSemaphore": {
2532      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2533        {
2534          "vuid": "VUID-vkSignalSemaphore-device-parameter",
2535          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2536        },
2537        {
2538          "vuid": "VUID-vkSignalSemaphore-pSignalInfo-parameter",
2539          "text": " <code>pSignalInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreSignalInfo\">VkSemaphoreSignalInfo</a> structure"
2540        }
2541      ]
2542    },
2543    "VkSemaphoreSignalInfo": {
2544      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2545        {
2546          "vuid": "VUID-VkSemaphoreSignalInfo-semaphore-03257",
2547          "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>"
2548        },
2549        {
2550          "vuid": "VUID-VkSemaphoreSignalInfo-value-03258",
2551          "text": " <code>value</code> <strong class=\"purple\">must</strong> have a value greater than the current value of the semaphore"
2552        },
2553        {
2554          "vuid": "VUID-VkSemaphoreSignalInfo-value-03259",
2555          "text": " <code>value</code> <strong class=\"purple\">must</strong> be less than the value of any pending semaphore signal operations"
2556        },
2557        {
2558          "vuid": "VUID-VkSemaphoreSignalInfo-value-03260",
2559          "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>"
2560        },
2561        {
2562          "vuid": "VUID-VkSemaphoreSignalInfo-sType-sType",
2563          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO</code>"
2564        },
2565        {
2566          "vuid": "VUID-VkSemaphoreSignalInfo-pNext-pNext",
2567          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2568        },
2569        {
2570          "vuid": "VUID-VkSemaphoreSignalInfo-semaphore-parameter",
2571          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
2572        }
2573      ]
2574    },
2575    "vkImportSemaphoreWin32HandleKHR": {
2576      "(VK_KHR_external_semaphore_win32)": [
2577        {
2578          "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-device-parameter",
2579          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2580        },
2581        {
2582          "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-pImportSemaphoreWin32HandleInfo-parameter",
2583          "text": " <code>pImportSemaphoreWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportSemaphoreWin32HandleInfoKHR\">VkImportSemaphoreWin32HandleInfoKHR</a> structure"
2584        }
2585      ]
2586    },
2587    "VkImportSemaphoreWin32HandleInfoKHR": {
2588      "(VK_KHR_external_semaphore_win32)": [
2589        {
2590          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140",
2591          "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"
2592        },
2593        {
2594          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466",
2595          "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>"
2596        },
2597        {
2598          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01467",
2599          "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>"
2600        },
2601        {
2602          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01468",
2603          "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>"
2604        },
2605        {
2606          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01469",
2607          "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2608        },
2609        {
2610          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542",
2611          "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>"
2612        },
2613        {
2614          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543",
2615          "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>"
2616        },
2617        {
2618          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-03261",
2619          "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"
2620        },
2621        {
2622          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-sType-sType",
2623          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>"
2624        },
2625        {
2626          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-pNext-pNext",
2627          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2628        },
2629        {
2630          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-semaphore-parameter",
2631          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
2632        },
2633        {
2634          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-parameter",
2635          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values"
2636        },
2637        {
2638          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-parameter",
2639          "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"
2640        }
2641      ],
2642      "(VK_KHR_external_semaphore_win32)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2643        {
2644          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-03262",
2645          "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"
2646        },
2647        {
2648          "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-03322",
2649          "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>"
2650        }
2651      ]
2652    },
2653    "vkImportSemaphoreFdKHR": {
2654      "(VK_KHR_external_semaphore_fd)": [
2655        {
2656          "vuid": "VUID-vkImportSemaphoreFdKHR-semaphore-01142",
2657          "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"
2658        },
2659        {
2660          "vuid": "VUID-vkImportSemaphoreFdKHR-device-parameter",
2661          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2662        },
2663        {
2664          "vuid": "VUID-vkImportSemaphoreFdKHR-pImportSemaphoreFdInfo-parameter",
2665          "text": " <code>pImportSemaphoreFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportSemaphoreFdInfoKHR\">VkImportSemaphoreFdInfoKHR</a> structure"
2666        }
2667      ]
2668    },
2669    "VkImportSemaphoreFdInfoKHR": {
2670      "(VK_KHR_external_semaphore_fd)": [
2671        {
2672          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-01143",
2673          "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"
2674        },
2675        {
2676          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-fd-01544",
2677          "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>"
2678        },
2679        {
2680          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-03263",
2681          "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"
2682        },
2683        {
2684          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-sType-sType",
2685          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR</code>"
2686        },
2687        {
2688          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-pNext-pNext",
2689          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2690        },
2691        {
2692          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-semaphore-parameter",
2693          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
2694        },
2695        {
2696          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-parameter",
2697          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values"
2698        },
2699        {
2700          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-parameter",
2701          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
2702        }
2703      ],
2704      "(VK_KHR_external_semaphore_fd)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
2705        {
2706          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-03264",
2707          "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"
2708        },
2709        {
2710          "vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-03323",
2711          "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>"
2712        }
2713      ]
2714    },
2715    "vkCreateEvent": {
2716      "(VK_KHR_portability_subset)": [
2717        {
2718          "vuid": "VUID-vkCreateEvent-events-04468",
2719          "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>events</code> is <code>VK_FALSE</code>, then the implementation does not support <a href=\"#synchronization-events\">events</a>, and <a href=\"#vkCreateEvent\">vkCreateEvent</a> <strong class=\"purple\">must</strong> not be used."
2720        }
2721      ],
2722      "core": [
2723        {
2724          "vuid": "VUID-vkCreateEvent-device-parameter",
2725          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2726        },
2727        {
2728          "vuid": "VUID-vkCreateEvent-pCreateInfo-parameter",
2729          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkEventCreateInfo\">VkEventCreateInfo</a> structure"
2730        },
2731        {
2732          "vuid": "VUID-vkCreateEvent-pAllocator-parameter",
2733          "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"
2734        },
2735        {
2736          "vuid": "VUID-vkCreateEvent-pEvent-parameter",
2737          "text": " <code>pEvent</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkEvent\">VkEvent</a> handle"
2738        }
2739      ]
2740    },
2741    "VkEventCreateInfo": {
2742      "core": [
2743        {
2744          "vuid": "VUID-VkEventCreateInfo-sType-sType",
2745          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EVENT_CREATE_INFO</code>"
2746        },
2747        {
2748          "vuid": "VUID-VkEventCreateInfo-pNext-pNext",
2749          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2750        },
2751        {
2752          "vuid": "VUID-VkEventCreateInfo-flags-zerobitmask",
2753          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
2754        }
2755      ]
2756    },
2757    "vkDestroyEvent": {
2758      "core": [
2759        {
2760          "vuid": "VUID-vkDestroyEvent-event-01145",
2761          "text": " All submitted commands that refer to <code>event</code> <strong class=\"purple\">must</strong> have completed execution"
2762        },
2763        {
2764          "vuid": "VUID-vkDestroyEvent-event-01146",
2765          "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"
2766        },
2767        {
2768          "vuid": "VUID-vkDestroyEvent-event-01147",
2769          "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>"
2770        },
2771        {
2772          "vuid": "VUID-vkDestroyEvent-device-parameter",
2773          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2774        },
2775        {
2776          "vuid": "VUID-vkDestroyEvent-event-parameter",
2777          "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"
2778        },
2779        {
2780          "vuid": "VUID-vkDestroyEvent-pAllocator-parameter",
2781          "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"
2782        },
2783        {
2784          "vuid": "VUID-vkDestroyEvent-event-parent",
2785          "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>"
2786        }
2787      ]
2788    },
2789    "vkGetEventStatus": {
2790      "core": [
2791        {
2792          "vuid": "VUID-vkGetEventStatus-device-parameter",
2793          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2794        },
2795        {
2796          "vuid": "VUID-vkGetEventStatus-event-parameter",
2797          "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle"
2798        },
2799        {
2800          "vuid": "VUID-vkGetEventStatus-event-parent",
2801          "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2802        }
2803      ]
2804    },
2805    "vkSetEvent": {
2806      "core": [
2807        {
2808          "vuid": "VUID-vkSetEvent-device-parameter",
2809          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2810        },
2811        {
2812          "vuid": "VUID-vkSetEvent-event-parameter",
2813          "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle"
2814        },
2815        {
2816          "vuid": "VUID-vkSetEvent-event-parent",
2817          "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2818        }
2819      ]
2820    },
2821    "vkResetEvent": {
2822      "core": [
2823        {
2824          "vuid": "VUID-vkResetEvent-event-01148",
2825          "text": " <code>event</code> <strong class=\"purple\">must</strong> not be waited on by a <code>vkCmdWaitEvents</code> command that is currently executing"
2826        },
2827        {
2828          "vuid": "VUID-vkResetEvent-device-parameter",
2829          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
2830        },
2831        {
2832          "vuid": "VUID-vkResetEvent-event-parameter",
2833          "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle"
2834        },
2835        {
2836          "vuid": "VUID-vkResetEvent-event-parent",
2837          "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2838        }
2839      ]
2840    },
2841    "vkCmdSetEvent": {
2842      "core": [
2843        {
2844          "vuid": "VUID-vkCmdSetEvent-stageMask-04090",
2845          "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>"
2846        },
2847        {
2848          "vuid": "VUID-vkCmdSetEvent-stageMask-04091",
2849          "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>"
2850        },
2851        {
2852          "vuid": "VUID-vkCmdSetEvent-stageMask-4098",
2853          "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>"
2854        },
2855        {
2856          "vuid": "VUID-vkCmdSetEvent-stageMask-01149",
2857          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
2858        },
2859        {
2860          "vuid": "VUID-vkCmdSetEvent-commandBuffer-parameter",
2861          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
2862        },
2863        {
2864          "vuid": "VUID-vkCmdSetEvent-event-parameter",
2865          "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle"
2866        },
2867        {
2868          "vuid": "VUID-vkCmdSetEvent-stageMask-parameter",
2869          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2870        },
2871        {
2872          "vuid": "VUID-vkCmdSetEvent-stageMask-requiredbitmask",
2873          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2874        },
2875        {
2876          "vuid": "VUID-vkCmdSetEvent-commandBuffer-recording",
2877          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
2878        },
2879        {
2880          "vuid": "VUID-vkCmdSetEvent-commandBuffer-cmdpool",
2881          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
2882        },
2883        {
2884          "vuid": "VUID-vkCmdSetEvent-renderpass",
2885          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
2886        },
2887        {
2888          "vuid": "VUID-vkCmdSetEvent-commonparent",
2889          "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>"
2890        }
2891      ],
2892      "(VK_EXT_conditional_rendering)": [
2893        {
2894          "vuid": "VUID-vkCmdSetEvent-stageMask-04092",
2895          "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>"
2896        }
2897      ],
2898      "(VK_EXT_fragment_density_map)": [
2899        {
2900          "vuid": "VUID-vkCmdSetEvent-stageMask-04093",
2901          "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>"
2902        }
2903      ],
2904      "(VK_EXT_transform_feedback)": [
2905        {
2906          "vuid": "VUID-vkCmdSetEvent-stageMask-04094",
2907          "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>"
2908        }
2909      ],
2910      "(VK_NV_mesh_shader)": [
2911        {
2912          "vuid": "VUID-vkCmdSetEvent-stageMask-04095",
2913          "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>"
2914        },
2915        {
2916          "vuid": "VUID-vkCmdSetEvent-stageMask-04096",
2917          "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>"
2918        }
2919      ],
2920      "(VK_NV_shading_rate_image)": [
2921        {
2922          "vuid": "VUID-vkCmdSetEvent-stageMask-04097",
2923          "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>"
2924        }
2925      ],
2926      "(VK_VERSION_1_1,VK_KHR_device_group)": [
2927        {
2928          "vuid": "VUID-vkCmdSetEvent-commandBuffer-01152",
2929          "text": " <code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device"
2930        }
2931      ]
2932    },
2933    "vkCmdResetEvent": {
2934      "core": [
2935        {
2936          "vuid": "VUID-vkCmdResetEvent-stageMask-04090",
2937          "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>"
2938        },
2939        {
2940          "vuid": "VUID-vkCmdResetEvent-stageMask-04091",
2941          "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>"
2942        },
2943        {
2944          "vuid": "VUID-vkCmdResetEvent-stageMask-4098",
2945          "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>"
2946        },
2947        {
2948          "vuid": "VUID-vkCmdResetEvent-stageMask-01153",
2949          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
2950        },
2951        {
2952          "vuid": "VUID-vkCmdResetEvent-event-01156",
2953          "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"
2954        },
2955        {
2956          "vuid": "VUID-vkCmdResetEvent-commandBuffer-parameter",
2957          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
2958        },
2959        {
2960          "vuid": "VUID-vkCmdResetEvent-event-parameter",
2961          "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle"
2962        },
2963        {
2964          "vuid": "VUID-vkCmdResetEvent-stageMask-parameter",
2965          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2966        },
2967        {
2968          "vuid": "VUID-vkCmdResetEvent-stageMask-requiredbitmask",
2969          "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2970        },
2971        {
2972          "vuid": "VUID-vkCmdResetEvent-commandBuffer-recording",
2973          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
2974        },
2975        {
2976          "vuid": "VUID-vkCmdResetEvent-commandBuffer-cmdpool",
2977          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
2978        },
2979        {
2980          "vuid": "VUID-vkCmdResetEvent-renderpass",
2981          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
2982        },
2983        {
2984          "vuid": "VUID-vkCmdResetEvent-commonparent",
2985          "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>"
2986        }
2987      ],
2988      "(VK_EXT_conditional_rendering)": [
2989        {
2990          "vuid": "VUID-vkCmdResetEvent-stageMask-04092",
2991          "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>"
2992        }
2993      ],
2994      "(VK_EXT_fragment_density_map)": [
2995        {
2996          "vuid": "VUID-vkCmdResetEvent-stageMask-04093",
2997          "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>"
2998        }
2999      ],
3000      "(VK_EXT_transform_feedback)": [
3001        {
3002          "vuid": "VUID-vkCmdResetEvent-stageMask-04094",
3003          "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>"
3004        }
3005      ],
3006      "(VK_NV_mesh_shader)": [
3007        {
3008          "vuid": "VUID-vkCmdResetEvent-stageMask-04095",
3009          "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>"
3010        },
3011        {
3012          "vuid": "VUID-vkCmdResetEvent-stageMask-04096",
3013          "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>"
3014        }
3015      ],
3016      "(VK_NV_shading_rate_image)": [
3017        {
3018          "vuid": "VUID-vkCmdResetEvent-stageMask-04097",
3019          "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>"
3020        }
3021      ],
3022      "(VK_VERSION_1_1,VK_KHR_device_group)": [
3023        {
3024          "vuid": "VUID-vkCmdResetEvent-commandBuffer-01157",
3025          "text": " <code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device"
3026        }
3027      ]
3028    },
3029    "vkCmdWaitEvents": {
3030      "core": [
3031        {
3032          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04090",
3033          "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>"
3034        },
3035        {
3036          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04091",
3037          "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>"
3038        },
3039        {
3040          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-4098",
3041          "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>"
3042        },
3043        {
3044          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04090",
3045          "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>"
3046        },
3047        {
3048          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04091",
3049          "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>"
3050        },
3051        {
3052          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-4098",
3053          "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>"
3054        },
3055        {
3056          "vuid": "VUID-vkCmdWaitEvents-srcAccessMask-02815",
3057          "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>"
3058        },
3059        {
3060          "vuid": "VUID-vkCmdWaitEvents-dstAccessMask-02816",
3061          "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>"
3062        },
3063        {
3064          "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02817",
3065          "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>"
3066        },
3067        {
3068          "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02818",
3069          "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>"
3070        },
3071        {
3072          "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-02819",
3073          "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>"
3074        },
3075        {
3076          "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-02820",
3077          "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>"
3078        },
3079        {
3080          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01158",
3081          "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>"
3082        },
3083        {
3084          "vuid": "VUID-vkCmdWaitEvents-pEvents-01163",
3085          "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"
3086        },
3087        {
3088          "vuid": "VUID-vkCmdWaitEvents-srcQueueFamilyIndex-02803",
3089          "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"
3090        },
3091        {
3092          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-parameter",
3093          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
3094        },
3095        {
3096          "vuid": "VUID-vkCmdWaitEvents-pEvents-parameter",
3097          "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"
3098        },
3099        {
3100          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-parameter",
3101          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3102        },
3103        {
3104          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-requiredbitmask",
3105          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3106        },
3107        {
3108          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-parameter",
3109          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3110        },
3111        {
3112          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-requiredbitmask",
3113          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3114        },
3115        {
3116          "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-parameter",
3117          "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"
3118        },
3119        {
3120          "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter",
3121          "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"
3122        },
3123        {
3124          "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter",
3125          "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"
3126        },
3127        {
3128          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-recording",
3129          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
3130        },
3131        {
3132          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-cmdpool",
3133          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
3134        },
3135        {
3136          "vuid": "VUID-vkCmdWaitEvents-eventCount-arraylength",
3137          "text": " <code>eventCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
3138        },
3139        {
3140          "vuid": "VUID-vkCmdWaitEvents-commonparent",
3141          "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>"
3142        }
3143      ],
3144      "(VK_EXT_conditional_rendering)": [
3145        {
3146          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04092",
3147          "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>"
3148        },
3149        {
3150          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04092",
3151          "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>"
3152        }
3153      ],
3154      "(VK_EXT_fragment_density_map)": [
3155        {
3156          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04093",
3157          "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>"
3158        },
3159        {
3160          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04093",
3161          "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>"
3162        }
3163      ],
3164      "(VK_EXT_transform_feedback)": [
3165        {
3166          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04094",
3167          "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>"
3168        },
3169        {
3170          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04094",
3171          "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>"
3172        }
3173      ],
3174      "(VK_NV_mesh_shader)": [
3175        {
3176          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04095",
3177          "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>"
3178        },
3179        {
3180          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04096",
3181          "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>"
3182        },
3183        {
3184          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04095",
3185          "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>"
3186        },
3187        {
3188          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04096",
3189          "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>"
3190        }
3191      ],
3192      "(VK_NV_shading_rate_image)": [
3193        {
3194          "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04097",
3195          "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>"
3196        },
3197        {
3198          "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04097",
3199          "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>"
3200        }
3201      ],
3202      "(VK_VERSION_1_1,VK_KHR_device_group)": [
3203        {
3204          "vuid": "VUID-vkCmdWaitEvents-commandBuffer-01167",
3205          "text": " <code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device"
3206        }
3207      ]
3208    },
3209    "vkCmdPipelineBarrier": {
3210      "core": [
3211        {
3212          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04090",
3213          "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>"
3214        },
3215        {
3216          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04091",
3217          "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>"
3218        },
3219        {
3220          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-4098",
3221          "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>"
3222        },
3223        {
3224          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04090",
3225          "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>"
3226        },
3227        {
3228          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04091",
3229          "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>"
3230        },
3231        {
3232          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-4098",
3233          "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>"
3234        },
3235        {
3236          "vuid": "VUID-vkCmdPipelineBarrier-srcAccessMask-02815",
3237          "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>"
3238        },
3239        {
3240          "vuid": "VUID-vkCmdPipelineBarrier-dstAccessMask-02816",
3241          "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>"
3242        },
3243        {
3244          "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02817",
3245          "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>"
3246        },
3247        {
3248          "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02818",
3249          "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>"
3250        },
3251        {
3252          "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02819",
3253          "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>"
3254        },
3255        {
3256          "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02820",
3257          "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>"
3258        },
3259        {
3260          "vuid": "VUID-vkCmdPipelineBarrier-pDependencies-02285",
3261          "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"
3262        },
3263        {
3264          "vuid": "VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178",
3265          "text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, it <strong class=\"purple\">must</strong> not include any buffer memory barriers"
3266        },
3267        {
3268          "vuid": "VUID-vkCmdPipelineBarrier-image-04073",
3269          "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"
3270        },
3271        {
3272          "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-01181",
3273          "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"
3274        },
3275        {
3276          "vuid": "VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182",
3277          "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"
3278        },
3279        {
3280          "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-parameter",
3281          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
3282        },
3283        {
3284          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-parameter",
3285          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3286        },
3287        {
3288          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-requiredbitmask",
3289          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3290        },
3291        {
3292          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-parameter",
3293          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3294        },
3295        {
3296          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-requiredbitmask",
3297          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3298        },
3299        {
3300          "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-parameter",
3301          "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
3302        },
3303        {
3304          "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter",
3305          "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"
3306        },
3307        {
3308          "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter",
3309          "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"
3310        },
3311        {
3312          "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter",
3313          "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"
3314        },
3315        {
3316          "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-recording",
3317          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
3318        },
3319        {
3320          "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool",
3321          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
3322        }
3323      ],
3324      "(VK_EXT_conditional_rendering)": [
3325        {
3326          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04092",
3327          "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>"
3328        },
3329        {
3330          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04092",
3331          "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>"
3332        }
3333      ],
3334      "(VK_EXT_fragment_density_map)": [
3335        {
3336          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04093",
3337          "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>"
3338        },
3339        {
3340          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04093",
3341          "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>"
3342        }
3343      ],
3344      "(VK_EXT_transform_feedback)": [
3345        {
3346          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04094",
3347          "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>"
3348        },
3349        {
3350          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04094",
3351          "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>"
3352        }
3353      ],
3354      "(VK_NV_mesh_shader)": [
3355        {
3356          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04095",
3357          "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>"
3358        },
3359        {
3360          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04096",
3361          "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>"
3362        },
3363        {
3364          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04095",
3365          "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>"
3366        },
3367        {
3368          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04096",
3369          "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>"
3370        }
3371      ],
3372      "(VK_NV_shading_rate_image)": [
3373        {
3374          "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04097",
3375          "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>"
3376        },
3377        {
3378          "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04097",
3379          "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>"
3380        }
3381      ],
3382      "(VK_VERSION_1_1,VK_KHR_multiview)": [
3383        {
3384          "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-01186",
3385          "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"
3386        }
3387      ]
3388    },
3389    "VkMemoryBarrier": {
3390      "core": [
3391        {
3392          "vuid": "VUID-VkMemoryBarrier-sType-sType",
3393          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_BARRIER</code>"
3394        },
3395        {
3396          "vuid": "VUID-VkMemoryBarrier-pNext-pNext",
3397          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
3398        },
3399        {
3400          "vuid": "VUID-VkMemoryBarrier-srcAccessMask-parameter",
3401          "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
3402        },
3403        {
3404          "vuid": "VUID-VkMemoryBarrier-dstAccessMask-parameter",
3405          "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
3406        }
3407      ]
3408    },
3409    "VkBufferMemoryBarrier": {
3410      "core": [
3411        {
3412          "vuid": "VUID-VkBufferMemoryBarrier-offset-01187",
3413          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
3414        },
3415        {
3416          "vuid": "VUID-VkBufferMemoryBarrier-size-01188",
3417          "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>"
3418        },
3419        {
3420          "vuid": "VUID-VkBufferMemoryBarrier-size-01189",
3421          "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>"
3422        },
3423        {
3424          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01931",
3425          "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"
3426        },
3427        {
3428          "vuid": "VUID-VkBufferMemoryBarrier-sType-sType",
3429          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER</code>"
3430        },
3431        {
3432          "vuid": "VUID-VkBufferMemoryBarrier-pNext-pNext",
3433          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
3434        },
3435        {
3436          "vuid": "VUID-VkBufferMemoryBarrier-buffer-parameter",
3437          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
3438        }
3439      ],
3440      "!(VK_VERSION_1_1,VK_KHR_external_memory)": [
3441        {
3442          "vuid": "VUID-VkBufferMemoryBarrier-buffer-04086",
3443          "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"
3444        },
3445        {
3446          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01190",
3447          "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>"
3448        }
3449      ],
3450      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
3451        {
3452          "vuid": "VUID-VkBufferMemoryBarrier-srcQueueFamilyIndex-04087",
3453          "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>"
3454        },
3455        {
3456          "vuid": "VUID-VkBufferMemoryBarrier-buffer-04088",
3457          "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>"
3458        },
3459        {
3460          "vuid": "VUID-VkBufferMemoryBarrier-buffer-04089",
3461          "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>"
3462        },
3463        {
3464          "vuid": "VUID-VkBufferMemoryBarrier-buffer-01191",
3465          "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>"
3466        }
3467      ]
3468    },
3469    "VkImageMemoryBarrier": {
3470      "core": [
3471        {
3472          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01486",
3473          "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"
3474        },
3475        {
3476          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01724",
3477          "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"
3478        },
3479        {
3480          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01488",
3481          "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"
3482        },
3483        {
3484          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01725",
3485          "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"
3486        },
3487        {
3488          "vuid": "VUID-VkImageMemoryBarrier-image-01932",
3489          "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"
3490        },
3491        {
3492          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01208",
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_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"
3494        },
3495        {
3496          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01209",
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_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"
3498        },
3499        {
3500          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01210",
3501          "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"
3502        },
3503        {
3504          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01211",
3505          "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"
3506        },
3507        {
3508          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01212",
3509          "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"
3510        },
3511        {
3512          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01213",
3513          "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"
3514        },
3515        {
3516          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01197",
3517          "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"
3518        },
3519        {
3520          "vuid": "VUID-VkImageMemoryBarrier-newLayout-01198",
3521          "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>"
3522        },
3523        {
3524          "vuid": "VUID-VkImageMemoryBarrier-sType-sType",
3525          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER</code>"
3526        },
3527        {
3528          "vuid": "VUID-VkImageMemoryBarrier-pNext-pNext",
3529          "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>"
3530        },
3531        {
3532          "vuid": "VUID-VkImageMemoryBarrier-sType-unique",
3533          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
3534        },
3535        {
3536          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-parameter",
3537          "text": " <code>oldLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3538        },
3539        {
3540          "vuid": "VUID-VkImageMemoryBarrier-newLayout-parameter",
3541          "text": " <code>newLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3542        },
3543        {
3544          "vuid": "VUID-VkImageMemoryBarrier-image-parameter",
3545          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
3546        },
3547        {
3548          "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-parameter",
3549          "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structure"
3550        }
3551      ],
3552      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
3553        {
3554          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01658",
3555          "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"
3556        },
3557        {
3558          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01659",
3559          "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"
3560        }
3561      ],
3562      "(VK_VERSION_1_2,VK_EXT_separate_depth_stencil_layouts)": [
3563        {
3564          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04065",
3565          "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"
3566        },
3567        {
3568          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04066",
3569          "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"
3570        },
3571        {
3572          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04067",
3573          "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"
3574        },
3575        {
3576          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04068",
3577          "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"
3578        }
3579      ],
3580      "(VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image)": [
3581        {
3582          "vuid": "VUID-VkImageMemoryBarrier-oldLayout-02088",
3583          "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_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code> set"
3584        }
3585      ],
3586      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
3587        {
3588          "vuid": "VUID-VkImageMemoryBarrier-image-02902",
3589          "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>"
3590        }
3591      ],
3592      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
3593        {
3594          "vuid": "VUID-VkImageMemoryBarrier-image-01671",
3595          "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>"
3596        },
3597        {
3598          "vuid": "VUID-VkImageMemoryBarrier-image-01672",
3599          "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>"
3600        },
3601        {
3602          "vuid": "VUID-VkImageMemoryBarrier-image-01673",
3603          "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>"
3604        }
3605      ],
3606      "!(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
3607        {
3608          "vuid": "VUID-VkImageMemoryBarrier-image-01207",
3609          "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>"
3610        }
3611      ],
3612      "(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
3613        {
3614          "vuid": "VUID-VkImageMemoryBarrier-image-03319",
3615          "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>"
3616        },
3617        {
3618          "vuid": "VUID-VkImageMemoryBarrier-image-03320",
3619          "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>"
3620        }
3621      ],
3622      "!(VK_VERSION_1_1,VK_KHR_external_memory)": [
3623        {
3624          "vuid": "VUID-VkImageMemoryBarrier-image-04069",
3625          "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"
3626        },
3627        {
3628          "vuid": "VUID-VkImageMemoryBarrier-image-01199",
3629          "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>"
3630        }
3631      ],
3632      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
3633        {
3634          "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04070",
3635          "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>"
3636        },
3637        {
3638          "vuid": "VUID-VkImageMemoryBarrier-image-04071",
3639          "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>"
3640        },
3641        {
3642          "vuid": "VUID-VkImageMemoryBarrier-image-04072",
3643          "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>"
3644        },
3645        {
3646          "vuid": "VUID-VkImageMemoryBarrier-image-01381",
3647          "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>"
3648        }
3649      ]
3650    },
3651    "vkQueueWaitIdle": {
3652      "core": [
3653        {
3654          "vuid": "VUID-vkQueueWaitIdle-queue-parameter",
3655          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
3656        }
3657      ]
3658    },
3659    "vkDeviceWaitIdle": {
3660      "core": [
3661        {
3662          "vuid": "VUID-vkDeviceWaitIdle-device-parameter",
3663          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
3664        }
3665      ]
3666    },
3667    "vkGetCalibratedTimestampsEXT": {
3668      "(VK_EXT_calibrated_timestamps)": [
3669        {
3670          "vuid": "VUID-vkGetCalibratedTimestampsEXT-device-parameter",
3671          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
3672        },
3673        {
3674          "vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestampInfos-parameter",
3675          "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"
3676        },
3677        {
3678          "vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestamps-parameter",
3679          "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"
3680        },
3681        {
3682          "vuid": "VUID-vkGetCalibratedTimestampsEXT-pMaxDeviation-parameter",
3683          "text": " <code>pMaxDeviation</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
3684        },
3685        {
3686          "vuid": "VUID-vkGetCalibratedTimestampsEXT-timestampCount-arraylength",
3687          "text": " <code>timestampCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
3688        }
3689      ]
3690    },
3691    "VkCalibratedTimestampInfoEXT": {
3692      "(VK_EXT_calibrated_timestamps)": [
3693        {
3694          "vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-02354",
3695          "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>"
3696        },
3697        {
3698          "vuid": "VUID-VkCalibratedTimestampInfoEXT-sType-sType",
3699          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT</code>"
3700        },
3701        {
3702          "vuid": "VUID-VkCalibratedTimestampInfoEXT-pNext-pNext",
3703          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
3704        },
3705        {
3706          "vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-parameter",
3707          "text": " <code>timeDomain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> value"
3708        }
3709      ]
3710    },
3711    "vkCreateRenderPass": {
3712      "core": [
3713        {
3714          "vuid": "VUID-vkCreateRenderPass-device-parameter",
3715          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
3716        },
3717        {
3718          "vuid": "VUID-vkCreateRenderPass-pCreateInfo-parameter",
3719          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> structure"
3720        },
3721        {
3722          "vuid": "VUID-vkCreateRenderPass-pAllocator-parameter",
3723          "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"
3724        },
3725        {
3726          "vuid": "VUID-vkCreateRenderPass-pRenderPass-parameter",
3727          "text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkRenderPass\">VkRenderPass</a> handle"
3728        }
3729      ]
3730    },
3731    "VkRenderPassCreateInfo": {
3732      "core": [
3733        {
3734          "vuid": "VUID-VkRenderPassCreateInfo-attachment-00834",
3735          "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>"
3736        },
3737        {
3738          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-00836",
3739          "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>"
3740        },
3741        {
3742          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-02511",
3743          "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>"
3744        },
3745        {
3746          "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00837",
3747          "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"
3748        },
3749        {
3750          "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00838",
3751          "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"
3752        },
3753        {
3754          "vuid": "VUID-VkRenderPassCreateInfo-srcSubpass-02517",
3755          "text": " The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
3756        },
3757        {
3758          "vuid": "VUID-VkRenderPassCreateInfo-dstSubpass-02518",
3759          "text": " The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
3760        },
3761        {
3762          "vuid": "VUID-VkRenderPassCreateInfo-sType-sType",
3763          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO</code>"
3764        },
3765        {
3766          "vuid": "VUID-VkRenderPassCreateInfo-pNext-pNext",
3767          "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>"
3768        },
3769        {
3770          "vuid": "VUID-VkRenderPassCreateInfo-sType-unique",
3771          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
3772        },
3773        {
3774          "vuid": "VUID-VkRenderPassCreateInfo-flags-parameter",
3775          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkRenderPassCreateFlagBits\">VkRenderPassCreateFlagBits</a> values"
3776        },
3777        {
3778          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-parameter",
3779          "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"
3780        },
3781        {
3782          "vuid": "VUID-VkRenderPassCreateInfo-pSubpasses-parameter",
3783          "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"
3784        },
3785        {
3786          "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-parameter",
3787          "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"
3788        },
3789        {
3790          "vuid": "VUID-VkRenderPassCreateInfo-subpassCount-arraylength",
3791          "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
3792        }
3793      ],
3794      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
3795        {
3796          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01566",
3797          "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>"
3798        },
3799        {
3800          "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01567",
3801          "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>"
3802        },
3803        {
3804          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01926",
3805          "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>"
3806        },
3807        {
3808          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01927",
3809          "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"
3810        },
3811        {
3812          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01963",
3813          "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>"
3814        }
3815      ],
3816      "(VK_VERSION_1_1,VK_KHR_multiview)": [
3817        {
3818          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01928",
3819          "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>"
3820        },
3821        {
3822          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01929",
3823          "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>"
3824        },
3825        {
3826          "vuid": "VUID-VkRenderPassCreateInfo-pNext-01930",
3827          "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"
3828        },
3829        {
3830          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02512",
3831          "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>"
3832        },
3833        {
3834          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02513",
3835          "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>"
3836        },
3837        {
3838          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02514",
3839          "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>"
3840        },
3841        {
3842          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02515",
3843          "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>"
3844        },
3845        {
3846          "vuid": "VUID-VkRenderPassCreateInfo-pNext-02516",
3847          "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>"
3848        }
3849      ]
3850    },
3851    "VkRenderPassMultiviewCreateInfo": {
3852      "(VK_VERSION_1_1,VK_KHR_multiview)": [
3853        {
3854          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-00841",
3855          "text": " Each view index <strong class=\"purple\">must</strong> not be set in more than one element of <code>pCorrelationMasks</code>"
3856        },
3857        {
3858          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-sType-sType",
3859          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO</code>"
3860        },
3861        {
3862          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-parameter",
3863          "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"
3864        },
3865        {
3866          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewOffsets-parameter",
3867          "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"
3868        },
3869        {
3870          "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-parameter",
3871          "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"
3872        }
3873      ]
3874    },
3875    "VkRenderPassFragmentDensityMapCreateInfoEXT": {
3876      "(VK_EXT_fragment_density_map)": [
3877        {
3878          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02547",
3879          "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>"
3880        },
3881        {
3882          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02548",
3883          "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"
3884        },
3885        {
3886          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02549",
3887          "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>"
3888        },
3889        {
3890          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02550",
3891          "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>"
3892        },
3893        {
3894          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02551",
3895          "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>"
3896        },
3897        {
3898          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-sType-sType",
3899          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT</code>"
3900        },
3901        {
3902          "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-parameter",
3903          "text": " <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structure"
3904        }
3905      ]
3906    },
3907    "VkAttachmentDescription": {
3908      "core": [
3909        {
3910          "vuid": "VUID-VkAttachmentDescription-finalLayout-00843",
3911          "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
3912        },
3913        {
3914          "vuid": "VUID-VkAttachmentDescription-format-03280",
3915          "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>"
3916        },
3917        {
3918          "vuid": "VUID-VkAttachmentDescription-format-03281",
3919          "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>"
3920        },
3921        {
3922          "vuid": "VUID-VkAttachmentDescription-format-03282",
3923          "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>"
3924        },
3925        {
3926          "vuid": "VUID-VkAttachmentDescription-format-03283",
3927          "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>"
3928        },
3929        {
3930          "vuid": "VUID-VkAttachmentDescription-flags-parameter",
3931          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values"
3932        },
3933        {
3934          "vuid": "VUID-VkAttachmentDescription-format-parameter",
3935          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
3936        },
3937        {
3938          "vuid": "VUID-VkAttachmentDescription-samples-parameter",
3939          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
3940        },
3941        {
3942          "vuid": "VUID-VkAttachmentDescription-loadOp-parameter",
3943          "text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
3944        },
3945        {
3946          "vuid": "VUID-VkAttachmentDescription-storeOp-parameter",
3947          "text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
3948        },
3949        {
3950          "vuid": "VUID-VkAttachmentDescription-stencilLoadOp-parameter",
3951          "text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
3952        },
3953        {
3954          "vuid": "VUID-VkAttachmentDescription-stencilStoreOp-parameter",
3955          "text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
3956        },
3957        {
3958          "vuid": "VUID-VkAttachmentDescription-initialLayout-parameter",
3959          "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3960        },
3961        {
3962          "vuid": "VUID-VkAttachmentDescription-finalLayout-parameter",
3963          "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3964        }
3965      ],
3966      "(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
3967        {
3968          "vuid": "VUID-VkAttachmentDescription-separateDepthStencilLayouts-03284",
3969          "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>"
3970        },
3971        {
3972          "vuid": "VUID-VkAttachmentDescription-separateDepthStencilLayouts-03285",
3973          "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>"
3974        },
3975        {
3976          "vuid": "VUID-VkAttachmentDescription-format-03286",
3977          "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>"
3978        },
3979        {
3980          "vuid": "VUID-VkAttachmentDescription-format-03287",
3981          "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>"
3982        },
3983        {
3984          "vuid": "VUID-VkAttachmentDescription-format-03288",
3985          "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>"
3986        },
3987        {
3988          "vuid": "VUID-VkAttachmentDescription-format-03289",
3989          "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>"
3990        },
3991        {
3992          "vuid": "VUID-VkAttachmentDescription-format-03290",
3993          "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>"
3994        },
3995        {
3996          "vuid": "VUID-VkAttachmentDescription-format-03291",
3997          "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>"
3998        },
3999        {
4000          "vuid": "VUID-VkAttachmentDescription-format-03292",
4001          "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>"
4002        },
4003        {
4004          "vuid": "VUID-VkAttachmentDescription-format-03293",
4005          "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>"
4006        }
4007      ]
4008    },
4009    "VkRenderPassInputAttachmentAspectCreateInfo": {
4010      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
4011        {
4012          "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-sType-sType",
4013          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO</code>"
4014        },
4015        {
4016          "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-pAspectReferences-parameter",
4017          "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"
4018        },
4019        {
4020          "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-aspectReferenceCount-arraylength",
4021          "text": " <code>aspectReferenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
4022        }
4023      ]
4024    },
4025    "VkInputAttachmentAspectReference": {
4026      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
4027        {
4028          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-01964",
4029          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
4030        },
4031        {
4032          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-parameter",
4033          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
4034        },
4035        {
4036          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-requiredbitmask",
4037          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
4038        }
4039      ],
4040      "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_image_drm_format_modifier)": [
4041        {
4042          "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-02250",
4043          "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>"
4044        }
4045      ]
4046    },
4047    "VkSubpassDescription": {
4048      "core": [
4049        {
4050          "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-00844",
4051          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
4052        },
4053        {
4054          "vuid": "VUID-VkSubpassDescription-colorAttachmentCount-00845",
4055          "text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>"
4056        },
4057        {
4058          "vuid": "VUID-VkSubpassDescription-loadOp-00846",
4059          "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>"
4060        },
4061        {
4062          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00847",
4063          "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>"
4064        },
4065        {
4066          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00848",
4067          "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>"
4068        },
4069        {
4070          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00849",
4071          "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>"
4072        },
4073        {
4074          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00850",
4075          "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"
4076        },
4077        {
4078          "vuid": "VUID-VkSubpassDescription-pColorAttachments-01417",
4079          "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"
4080        },
4081        {
4082          "vuid": "VUID-VkSubpassDescription-pInputAttachments-02647",
4083          "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>"
4084        },
4085        {
4086          "vuid": "VUID-VkSubpassDescription-pColorAttachments-02648",
4087          "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>"
4088        },
4089        {
4090          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-02649",
4091          "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>"
4092        },
4093        {
4094          "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-02650",
4095          "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>"
4096        },
4097        {
4098          "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-01418",
4099          "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"
4100        },
4101        {
4102          "vuid": "VUID-VkSubpassDescription-attachment-00853",
4103          "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>"
4104        },
4105        {
4106          "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-00854",
4107          "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"
4108        },
4109        {
4110          "vuid": "VUID-VkSubpassDescription-layout-02519",
4111          "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>"
4112        },
4113        {
4114          "vuid": "VUID-VkSubpassDescription-None-04437",
4115          "text": " Each attachment <strong class=\"purple\">must</strong> follow the <a href=\"#attachment-type-imagelayout\">image layout requirements</a> specified for its attachment type"
4116        },
4117        {
4118          "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-04438",
4119          "text": " <code>pDepthStencilAttachment</code> and <code>pColorAttachments</code> must not contain references to the same attachment"
4120        },
4121        {
4122          "vuid": "VUID-VkSubpassDescription-flags-parameter",
4123          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values"
4124        },
4125        {
4126          "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-parameter",
4127          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
4128        },
4129        {
4130          "vuid": "VUID-VkSubpassDescription-pInputAttachments-parameter",
4131          "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"
4132        },
4133        {
4134          "vuid": "VUID-VkSubpassDescription-pColorAttachments-parameter",
4135          "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"
4136        },
4137        {
4138          "vuid": "VUID-VkSubpassDescription-pResolveAttachments-parameter",
4139          "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"
4140        },
4141        {
4142          "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-parameter",
4143          "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"
4144        },
4145        {
4146          "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-parameter",
4147          "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"
4148        }
4149      ],
4150      "(VK_AMD_mixed_attachment_samples)": [
4151        {
4152          "vuid": "VUID-VkSubpassDescription-pColorAttachments-01506",
4153          "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>"
4154        }
4155      ],
4156      "(VK_NVX_multiview_per_view_attributes)": [
4157        {
4158          "vuid": "VUID-VkSubpassDescription-flags-00856",
4159          "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>"
4160        }
4161      ],
4162      "(VK_QCOM_render_pass_shader_resolve)": [
4163        {
4164          "vuid": "VUID-VkSubpassDescription-flags-03341",
4165          "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>"
4166        },
4167        {
4168          "vuid": "VUID-VkSubpassDescription-flags-03342",
4169          "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>"
4170        },
4171        {
4172          "vuid": "VUID-VkSubpassDescription-flags-03343",
4173          "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"
4174        },
4175        {
4176          "vuid": "VUID-VkSubpassDescription-flags-03344",
4177          "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>"
4178        },
4179        {
4180          "vuid": "VUID-VkSubpassDescription-flags-03345",
4181          "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"
4182        }
4183      ],
4184      "(VK_QCOM_render_pass_transform)": [
4185        {
4186          "vuid": "VUID-VkSubpassDescription-pInputAttachments-02868",
4187          "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>"
4188        }
4189      ]
4190    },
4191    "VkAttachmentReference": {
4192      "core": [
4193        {
4194          "vuid": "VUID-VkAttachmentReference-layout-00857",
4195          "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>"
4196        },
4197        {
4198          "vuid": "VUID-VkAttachmentReference-layout-parameter",
4199          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
4200        }
4201      ]
4202    },
4203    "VkSubpassDependency": {
4204      "core": [
4205        {
4206          "vuid": "VUID-VkSubpassDependency-srcStageMask-00860",
4207          "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>"
4208        },
4209        {
4210          "vuid": "VUID-VkSubpassDependency-dstStageMask-00861",
4211          "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>"
4212        },
4213        {
4214          "vuid": "VUID-VkSubpassDependency-srcStageMask-00862",
4215          "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>"
4216        },
4217        {
4218          "vuid": "VUID-VkSubpassDependency-dstStageMask-00863",
4219          "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>"
4220        },
4221        {
4222          "vuid": "VUID-VkSubpassDependency-srcSubpass-00864",
4223          "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"
4224        },
4225        {
4226          "vuid": "VUID-VkSubpassDependency-srcSubpass-00865",
4227          "text": " <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>"
4228        },
4229        {
4230          "vuid": "VUID-VkSubpassDependency-srcSubpass-00867",
4231          "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>"
4232        },
4233        {
4234          "vuid": "VUID-VkSubpassDependency-srcAccessMask-00868",
4235          "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>"
4236        },
4237        {
4238          "vuid": "VUID-VkSubpassDependency-dstAccessMask-00869",
4239          "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>"
4240        },
4241        {
4242          "vuid": "VUID-VkSubpassDependency-srcSubpass-02243",
4243          "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>"
4244        },
4245        {
4246          "vuid": "VUID-VkSubpassDependency-srcStageMask-parameter",
4247          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
4248        },
4249        {
4250          "vuid": "VUID-VkSubpassDependency-srcStageMask-requiredbitmask",
4251          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
4252        },
4253        {
4254          "vuid": "VUID-VkSubpassDependency-dstStageMask-parameter",
4255          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
4256        },
4257        {
4258          "vuid": "VUID-VkSubpassDependency-dstStageMask-requiredbitmask",
4259          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
4260        },
4261        {
4262          "vuid": "VUID-VkSubpassDependency-srcAccessMask-parameter",
4263          "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
4264        },
4265        {
4266          "vuid": "VUID-VkSubpassDependency-dstAccessMask-parameter",
4267          "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
4268        },
4269        {
4270          "vuid": "VUID-VkSubpassDependency-dependencyFlags-parameter",
4271          "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
4272        }
4273      ],
4274      "(VK_VERSION_1_1,VK_KHR_multiview)": [
4275        {
4276          "vuid": "VUID-VkSubpassDependency-dependencyFlags-02520",
4277          "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>"
4278        },
4279        {
4280          "vuid": "VUID-VkSubpassDependency-dependencyFlags-02521",
4281          "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>"
4282        },
4283        {
4284          "vuid": "VUID-VkSubpassDependency-srcSubpass-00872",
4285          "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>"
4286        }
4287      ],
4288      "(VK_NV_mesh_shader)": [
4289        {
4290          "vuid": "VUID-VkSubpassDependency-srcStageMask-02099",
4291          "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>"
4292        },
4293        {
4294          "vuid": "VUID-VkSubpassDependency-srcStageMask-02100",
4295          "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>"
4296        },
4297        {
4298          "vuid": "VUID-VkSubpassDependency-dstStageMask-02101",
4299          "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>"
4300        },
4301        {
4302          "vuid": "VUID-VkSubpassDependency-dstStageMask-02102",
4303          "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>"
4304        }
4305      ]
4306    },
4307    "vkCreateRenderPass2": {
4308      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
4309        {
4310          "vuid": "VUID-vkCreateRenderPass2-device-parameter",
4311          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
4312        },
4313        {
4314          "vuid": "VUID-vkCreateRenderPass2-pCreateInfo-parameter",
4315          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassCreateInfo2\">VkRenderPassCreateInfo2</a> structure"
4316        },
4317        {
4318          "vuid": "VUID-vkCreateRenderPass2-pAllocator-parameter",
4319          "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"
4320        },
4321        {
4322          "vuid": "VUID-vkCreateRenderPass2-pRenderPass-parameter",
4323          "text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkRenderPass\">VkRenderPass</a> handle"
4324        }
4325      ]
4326    },
4327    "VkRenderPassCreateInfo2": {
4328      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
4329        {
4330          "vuid": "VUID-VkRenderPassCreateInfo2-None-03049",
4331          "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"
4332        },
4333        {
4334          "vuid": "VUID-VkRenderPassCreateInfo2-attachment-03050",
4335          "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>"
4336        },
4337        {
4338          "vuid": "VUID-VkRenderPassCreateInfo2-attachment-03051",
4339          "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>"
4340        },
4341        {
4342          "vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-02522",
4343          "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>"
4344        },
4345        {
4346          "vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-02523",
4347          "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>"
4348        },
4349        {
4350          "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-03054",
4351          "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"
4352        },
4353        {
4354          "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-03055",
4355          "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"
4356        },
4357        {
4358          "vuid": "VUID-VkRenderPassCreateInfo2-pCorrelatedViewMasks-03056",
4359          "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>"
4360        },
4361        {
4362          "vuid": "VUID-VkRenderPassCreateInfo2-viewMask-03057",
4363          "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>"
4364        },
4365        {
4366          "vuid": "VUID-VkRenderPassCreateInfo2-viewMask-03058",
4367          "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>"
4368        },
4369        {
4370          "vuid": "VUID-VkRenderPassCreateInfo2-viewMask-03059",
4371          "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>"
4372        },
4373        {
4374          "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-03060",
4375          "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>"
4376        },
4377        {
4378          "vuid": "VUID-VkRenderPassCreateInfo2-viewMask-02524",
4379          "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>"
4380        },
4381        {
4382          "vuid": "VUID-VkRenderPassCreateInfo2-attachment-02525",
4383          "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>"
4384        },
4385        {
4386          "vuid": "VUID-VkRenderPassCreateInfo2-srcSubpass-02526",
4387          "text": " The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
4388        },
4389        {
4390          "vuid": "VUID-VkRenderPassCreateInfo2-dstSubpass-02527",
4391          "text": " The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
4392        },
4393        {
4394          "vuid": "VUID-VkRenderPassCreateInfo2-sType-sType",
4395          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2</code>"
4396        },
4397        {
4398          "vuid": "VUID-VkRenderPassCreateInfo2-pNext-pNext",
4399          "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>"
4400        },
4401        {
4402          "vuid": "VUID-VkRenderPassCreateInfo2-sType-unique",
4403          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
4404        },
4405        {
4406          "vuid": "VUID-VkRenderPassCreateInfo2-flags-parameter",
4407          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkRenderPassCreateFlagBits\">VkRenderPassCreateFlagBits</a> values"
4408        },
4409        {
4410          "vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-parameter",
4411          "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"
4412        },
4413        {
4414          "vuid": "VUID-VkRenderPassCreateInfo2-pSubpasses-parameter",
4415          "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"
4416        },
4417        {
4418          "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-parameter",
4419          "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"
4420        },
4421        {
4422          "vuid": "VUID-VkRenderPassCreateInfo2-pCorrelatedViewMasks-parameter",
4423          "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"
4424        },
4425        {
4426          "vuid": "VUID-VkRenderPassCreateInfo2-subpassCount-arraylength",
4427          "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
4428        }
4429      ],
4430      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_fragment_shading_rate)": [
4431        {
4432          "vuid": "VUID-VkRenderPassCreateInfo2-pAttachmentImageInfos-04520",
4433          "text": " If any element of <code>pAttachmentImageInfos</code> is used as a fragment shading rate attachment in any subpass, it <strong class=\"purple\">must</strong> not be used as any other attachment in the render pass"
4434        }
4435      ],
4436      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_fragment_shading_rate)+(VK_QCOM_render_pass_transform)": [
4437        {
4438          "vuid": "VUID-VkRenderPassCreateInfo2-flags-04521",
4439          "text": " If <code>flags</code> includes <code>VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM</code>, an element of <code>pSubpasses</code> includes an instance of <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> in its <code>pNext</code> chain, and the <code>pFragmentShadingRateAttachment</code> member of that structure is not equal to <code>NULL</code>, the <code>attachment</code> member of <code>pFragmentShadingRateAttachment</code> <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>"
4440        }
4441      ]
4442    },
4443    "VkAttachmentDescription2": {
4444      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
4445        {
4446          "vuid": "VUID-VkAttachmentDescription2-finalLayout-03061",
4447          "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
4448        },
4449        {
4450          "vuid": "VUID-VkAttachmentDescription2-format-03294",
4451          "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>"
4452        },
4453        {
4454          "vuid": "VUID-VkAttachmentDescription2-format-03295",
4455          "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>"
4456        },
4457        {
4458          "vuid": "VUID-VkAttachmentDescription2-format-03296",
4459          "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>"
4460        },
4461        {
4462          "vuid": "VUID-VkAttachmentDescription2-format-03297",
4463          "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>"
4464        },
4465        {
4466          "vuid": "VUID-VkAttachmentDescription2-sType-sType",
4467          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2</code>"
4468        },
4469        {
4470          "vuid": "VUID-VkAttachmentDescription2-flags-parameter",
4471          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values"
4472        },
4473        {
4474          "vuid": "VUID-VkAttachmentDescription2-format-parameter",
4475          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
4476        },
4477        {
4478          "vuid": "VUID-VkAttachmentDescription2-samples-parameter",
4479          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
4480        },
4481        {
4482          "vuid": "VUID-VkAttachmentDescription2-loadOp-parameter",
4483          "text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
4484        },
4485        {
4486          "vuid": "VUID-VkAttachmentDescription2-storeOp-parameter",
4487          "text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
4488        },
4489        {
4490          "vuid": "VUID-VkAttachmentDescription2-stencilLoadOp-parameter",
4491          "text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
4492        },
4493        {
4494          "vuid": "VUID-VkAttachmentDescription2-stencilStoreOp-parameter",
4495          "text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
4496        },
4497        {
4498          "vuid": "VUID-VkAttachmentDescription2-initialLayout-parameter",
4499          "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
4500        },
4501        {
4502          "vuid": "VUID-VkAttachmentDescription2-finalLayout-parameter",
4503          "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
4504        }
4505      ],
4506      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
4507        {
4508          "vuid": "VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03298",
4509          "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>"
4510        },
4511        {
4512          "vuid": "VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03299",
4513          "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>"
4514        },
4515        {
4516          "vuid": "VUID-VkAttachmentDescription2-format-03300",
4517          "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>"
4518        },
4519        {
4520          "vuid": "VUID-VkAttachmentDescription2-format-03301",
4521          "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>"
4522        },
4523        {
4524          "vuid": "VUID-VkAttachmentDescription2-format-03302",
4525          "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"
4526        },
4527        {
4528          "vuid": "VUID-VkAttachmentDescription2-format-03303",
4529          "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"
4530        },
4531        {
4532          "vuid": "VUID-VkAttachmentDescription2-format-03304",
4533          "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>"
4534        },
4535        {
4536          "vuid": "VUID-VkAttachmentDescription2-format-03305",
4537          "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>"
4538        },
4539        {
4540          "vuid": "VUID-VkAttachmentDescription2-format-03306",
4541          "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>"
4542        },
4543        {
4544          "vuid": "VUID-VkAttachmentDescription2-format-03307",
4545          "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>"
4546        }
4547      ]
4548    },
4549    "VkAttachmentDescriptionStencilLayout": {
4550      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
4551        {
4552          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilInitialLayout-03308",
4553          "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>"
4554        },
4555        {
4556          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-03309",
4557          "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>"
4558        },
4559        {
4560          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-03310",
4561          "text": " <code>stencilFinalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
4562        },
4563        {
4564          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-sType-sType",
4565          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT</code>"
4566        },
4567        {
4568          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilInitialLayout-parameter",
4569          "text": " <code>stencilInitialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
4570        },
4571        {
4572          "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-parameter",
4573          "text": " <code>stencilFinalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
4574        }
4575      ]
4576    },
4577    "VkSubpassDescription2": {
4578      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
4579        {
4580          "vuid": "VUID-VkSubpassDescription2-pipelineBindPoint-03062",
4581          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
4582        },
4583        {
4584          "vuid": "VUID-VkSubpassDescription2-colorAttachmentCount-03063",
4585          "text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>"
4586        },
4587        {
4588          "vuid": "VUID-VkSubpassDescription2-loadOp-03064",
4589          "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>"
4590        },
4591        {
4592          "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-03065",
4593          "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>"
4594        },
4595        {
4596          "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-03066",
4597          "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>"
4598        },
4599        {
4600          "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-03067",
4601          "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>"
4602        },
4603        {
4604          "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-03068",
4605          "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"
4606        },
4607        {
4608          "vuid": "VUID-VkSubpassDescription2-pColorAttachments-03069",
4609          "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"
4610        },
4611        {
4612          "vuid": "VUID-VkSubpassDescription2-pInputAttachments-02897",
4613          "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>"
4614        },
4615        {
4616          "vuid": "VUID-VkSubpassDescription2-pColorAttachments-02898",
4617          "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>"
4618        },
4619        {
4620          "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-02899",
4621          "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>"
4622        },
4623        {
4624          "vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-02900",
4625          "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>"
4626        },
4627        {
4628          "vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-03071",
4629          "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"
4630        },
4631        {
4632          "vuid": "VUID-VkSubpassDescription2-attachment-03073",
4633          "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>"
4634        },
4635        {
4636          "vuid": "VUID-VkSubpassDescription2-pPreserveAttachments-03074",
4637          "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"
4638        },
4639        {
4640          "vuid": "VUID-VkSubpassDescription2-layout-02528",
4641          "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>"
4642        },
4643        {
4644          "vuid": "VUID-VkSubpassDescription2-None-04439",
4645          "text": " Attachments <strong class=\"purple\">must</strong> follow the <a href=\"#attachment-type-imagelayout\">image layout requirements</a> based on the type of attachment it is being used as"
4646        },
4647        {
4648          "vuid": "VUID-VkSubpassDescription2-attachment-02799",
4649          "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>"
4650        },
4651        {
4652          "vuid": "VUID-VkSubpassDescription2-attachment-02800",
4653          "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>"
4654        },
4655        {
4656          "vuid": "VUID-VkSubpassDescription2-attachment-02801",
4657          "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>"
4658        },
4659        {
4660          "vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-04440",
4661          "text": " An attachment <strong class=\"purple\">must</strong> not be used in both <code>pDepthStencilAttachment</code> and <code>pColorAttachments</code>"
4662        },
4663        {
4664          "vuid": "VUID-VkSubpassDescription2-sType-sType",
4665          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2</code>"
4666        },
4667        {
4668          "vuid": "VUID-VkSubpassDescription2-flags-parameter",
4669          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values"
4670        },
4671        {
4672          "vuid": "VUID-VkSubpassDescription2-pipelineBindPoint-parameter",
4673          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
4674        },
4675        {
4676          "vuid": "VUID-VkSubpassDescription2-pInputAttachments-parameter",
4677          "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"
4678        },
4679        {
4680          "vuid": "VUID-VkSubpassDescription2-pColorAttachments-parameter",
4681          "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"
4682        },
4683        {
4684          "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-parameter",
4685          "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"
4686        },
4687        {
4688          "vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-parameter",
4689          "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"
4690        },
4691        {
4692          "vuid": "VUID-VkSubpassDescription2-pPreserveAttachments-parameter",
4693          "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"
4694        }
4695      ],
4696      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_AMD_mixed_attachment_samples)": [
4697        {
4698          "vuid": "VUID-VkSubpassDescription2-pColorAttachments-03070",
4699          "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>"
4700        }
4701      ],
4702      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_NVX_multiview_per_view_attributes)": [
4703        {
4704          "vuid": "VUID-VkSubpassDescription2-flags-03076",
4705          "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>"
4706        }
4707      ],
4708      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_fragment_shading_rate)": [
4709        {
4710          "vuid": "VUID-VkSubpassDescription2-pFragmentShadingRateAttachment-04522",
4711          "text": " If the <code>pFragmentShadingRateAttachment</code> member of a <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> structure included in the <code>pNext</code> chain is not <code>NULL</code>, and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, that attachment <strong class=\"purple\">must</strong> not be used as any other attachment in this subpass"
4712        }
4713      ]
4714    },
4715    "VkSubpassDescriptionDepthStencilResolve": {
4716      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_depth_stencil_resolve)": [
4717        {
4718          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03177",
4719          "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>"
4720        },
4721        {
4722          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03178",
4723          "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>"
4724        },
4725        {
4726          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03179",
4727          "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>"
4728        },
4729        {
4730          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03180",
4731          "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>"
4732        },
4733        {
4734          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-02651",
4735          "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>"
4736        },
4737        {
4738          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03181",
4739          "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"
4740        },
4741        {
4742          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03182",
4743          "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"
4744        },
4745        {
4746          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-depthResolveMode-03183",
4747          "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>"
4748        },
4749        {
4750          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-stencilResolveMode-03184",
4751          "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>"
4752        },
4753        {
4754          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03185",
4755          "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"
4756        },
4757        {
4758          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03186",
4759          "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>"
4760        },
4761        {
4762          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-sType-sType",
4763          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE</code>"
4764        },
4765        {
4766          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-depthResolveMode-parameter",
4767          "text": " <code>depthResolveMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkResolveModeFlagBits\">VkResolveModeFlagBits</a> value"
4768        },
4769        {
4770          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-stencilResolveMode-parameter",
4771          "text": " <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkResolveModeFlagBits\">VkResolveModeFlagBits</a> value"
4772        },
4773        {
4774          "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-parameter",
4775          "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"
4776        }
4777      ]
4778    },
4779    "VkFragmentShadingRateAttachmentInfoKHR": {
4780      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_fragment_shading_rate)": [
4781        {
4782          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04523",
4783          "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code> then it <strong class=\"purple\">must</strong> have a format whose features contain <code>VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>"
4784        },
4785        {
4786          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04524",
4787          "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> be equal to <code>VK_IMAGE_LAYOUT_GENERAL</code> or <code>VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR</code>"
4788        },
4789        {
4790          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04525",
4791          "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be a power of two value"
4792        },
4793        {
4794          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04526",
4795          "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSize\"><code>maxFragmentShadingRateAttachmentTexelSize.width</code></a>"
4796        },
4797        {
4798          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04527",
4799          "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be greater than or equal to <a href=\"#limits-minFragmentShadingRateAttachmentTexelSize\"><code>minFragmentShadingRateAttachmentTexelSize.width</code></a>"
4800        },
4801        {
4802          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04528",
4803          "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be a power of two value"
4804        },
4805        {
4806          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04529",
4807          "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSize\"><code>maxFragmentShadingRateAttachmentTexelSize.height</code></a>"
4808        },
4809        {
4810          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04530",
4811          "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be greater than or equal to <a href=\"#limits-minFragmentShadingRateAttachmentTexelSize\"><code>minFragmentShadingRateAttachmentTexelSize.height</code></a>"
4812        },
4813        {
4814          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04531",
4815          "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, the quotient of <code>shadingRateAttachmentTexelSize.width</code> and <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio\"><code>maxFragmentShadingRateAttachmentTexelSizeAspectRatio</code></a>"
4816        },
4817        {
4818          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04532",
4819          "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, the quotient of <code>shadingRateAttachmentTexelSize.height</code> and <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio\"><code>maxFragmentShadingRateAttachmentTexelSizeAspectRatio</code></a>"
4820        },
4821        {
4822          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-sType-sType",
4823          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR</code>"
4824        },
4825        {
4826          "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-parameter",
4827          "text": " <code>pFragmentShadingRateAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structure"
4828        }
4829      ]
4830    },
4831    "VkAttachmentReference2": {
4832      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
4833        {
4834          "vuid": "VUID-VkAttachmentReference2-layout-03077",
4835          "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>"
4836        },
4837        {
4838          "vuid": "VUID-VkAttachmentReference2-attachment-03311",
4839          "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>"
4840        },
4841        {
4842          "vuid": "VUID-VkAttachmentReference2-attachment-03312",
4843          "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>"
4844        },
4845        {
4846          "vuid": "VUID-VkAttachmentReference2-sType-sType",
4847          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2</code>"
4848        },
4849        {
4850          "vuid": "VUID-VkAttachmentReference2-layout-parameter",
4851          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
4852        }
4853      ],
4854      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
4855        {
4856          "vuid": "VUID-VkAttachmentReference2-separateDepthStencilLayouts-03313",
4857          "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>,"
4858        },
4859        {
4860          "vuid": "VUID-VkAttachmentReference2-attachment-03314",
4861          "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>,"
4862        },
4863        {
4864          "vuid": "VUID-VkAttachmentReference2-attachment-03315",
4865          "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"
4866        },
4867        {
4868          "vuid": "VUID-VkAttachmentReference2-attachment-03316",
4869          "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>"
4870        },
4871        {
4872          "vuid": "VUID-VkAttachmentReference2-attachment-03317",
4873          "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>"
4874        }
4875      ]
4876    },
4877    "VkAttachmentReferenceStencilLayout": {
4878      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
4879        {
4880          "vuid": "VUID-VkAttachmentReferenceStencilLayout-stencilLayout-03318",
4881          "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>"
4882        },
4883        {
4884          "vuid": "VUID-VkAttachmentReferenceStencilLayout-sType-sType",
4885          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT</code>"
4886        },
4887        {
4888          "vuid": "VUID-VkAttachmentReferenceStencilLayout-stencilLayout-parameter",
4889          "text": " <code>stencilLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
4890        }
4891      ]
4892    },
4893    "VkSubpassDependency2": {
4894      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
4895        {
4896          "vuid": "VUID-VkSubpassDependency2-srcStageMask-03080",
4897          "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>"
4898        },
4899        {
4900          "vuid": "VUID-VkSubpassDependency2-dstStageMask-03081",
4901          "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>"
4902        },
4903        {
4904          "vuid": "VUID-VkSubpassDependency2-srcStageMask-03082",
4905          "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>"
4906        },
4907        {
4908          "vuid": "VUID-VkSubpassDependency2-dstStageMask-03083",
4909          "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>"
4910        },
4911        {
4912          "vuid": "VUID-VkSubpassDependency2-srcSubpass-03084",
4913          "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"
4914        },
4915        {
4916          "vuid": "VUID-VkSubpassDependency2-srcSubpass-03085",
4917          "text": " <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>"
4918        },
4919        {
4920          "vuid": "VUID-VkSubpassDependency2-srcSubpass-03087",
4921          "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>"
4922        },
4923        {
4924          "vuid": "VUID-VkSubpassDependency2-srcAccessMask-03088",
4925          "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>"
4926        },
4927        {
4928          "vuid": "VUID-VkSubpassDependency2-dstAccessMask-03089",
4929          "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>"
4930        },
4931        {
4932          "vuid": "VUID-VkSubpassDependency2-dependencyFlags-03090",
4933          "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>"
4934        },
4935        {
4936          "vuid": "VUID-VkSubpassDependency2-dependencyFlags-03091",
4937          "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>"
4938        },
4939        {
4940          "vuid": "VUID-VkSubpassDependency2-srcSubpass-02245",
4941          "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>"
4942        },
4943        {
4944          "vuid": "VUID-VkSubpassDependency2-viewOffset-02530",
4945          "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>"
4946        },
4947        {
4948          "vuid": "VUID-VkSubpassDependency2-dependencyFlags-03092",
4949          "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>"
4950        },
4951        {
4952          "vuid": "VUID-VkSubpassDependency2-sType-sType",
4953          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2</code>"
4954        },
4955        {
4956          "vuid": "VUID-VkSubpassDependency2-srcStageMask-parameter",
4957          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
4958        },
4959        {
4960          "vuid": "VUID-VkSubpassDependency2-srcStageMask-requiredbitmask",
4961          "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
4962        },
4963        {
4964          "vuid": "VUID-VkSubpassDependency2-dstStageMask-parameter",
4965          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
4966        },
4967        {
4968          "vuid": "VUID-VkSubpassDependency2-dstStageMask-requiredbitmask",
4969          "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
4970        },
4971        {
4972          "vuid": "VUID-VkSubpassDependency2-srcAccessMask-parameter",
4973          "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
4974        },
4975        {
4976          "vuid": "VUID-VkSubpassDependency2-dstAccessMask-parameter",
4977          "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
4978        },
4979        {
4980          "vuid": "VUID-VkSubpassDependency2-dependencyFlags-parameter",
4981          "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
4982        }
4983      ],
4984      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_NV_mesh_shader)": [
4985        {
4986          "vuid": "VUID-VkSubpassDependency2-srcStageMask-02103",
4987          "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>"
4988        },
4989        {
4990          "vuid": "VUID-VkSubpassDependency2-srcStageMask-02104",
4991          "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>"
4992        },
4993        {
4994          "vuid": "VUID-VkSubpassDependency2-dstStageMask-02105",
4995          "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>"
4996        },
4997        {
4998          "vuid": "VUID-VkSubpassDependency2-dstStageMask-02106",
4999          "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>"
5000        }
5001      ]
5002    },
5003    "vkDestroyRenderPass": {
5004      "core": [
5005        {
5006          "vuid": "VUID-vkDestroyRenderPass-renderPass-00873",
5007          "text": " All submitted commands that refer to <code>renderPass</code> <strong class=\"purple\">must</strong> have completed execution"
5008        },
5009        {
5010          "vuid": "VUID-vkDestroyRenderPass-renderPass-00874",
5011          "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"
5012        },
5013        {
5014          "vuid": "VUID-vkDestroyRenderPass-renderPass-00875",
5015          "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>"
5016        },
5017        {
5018          "vuid": "VUID-vkDestroyRenderPass-device-parameter",
5019          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
5020        },
5021        {
5022          "vuid": "VUID-vkDestroyRenderPass-renderPass-parameter",
5023          "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"
5024        },
5025        {
5026          "vuid": "VUID-vkDestroyRenderPass-pAllocator-parameter",
5027          "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"
5028        },
5029        {
5030          "vuid": "VUID-vkDestroyRenderPass-renderPass-parent",
5031          "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>"
5032        }
5033      ]
5034    },
5035    "vkCreateFramebuffer": {
5036      "core": [
5037        {
5038          "vuid": "VUID-vkCreateFramebuffer-pCreateInfo-02777",
5039          "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>"
5040        },
5041        {
5042          "vuid": "VUID-vkCreateFramebuffer-device-parameter",
5043          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
5044        },
5045        {
5046          "vuid": "VUID-vkCreateFramebuffer-pCreateInfo-parameter",
5047          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a> structure"
5048        },
5049        {
5050          "vuid": "VUID-vkCreateFramebuffer-pAllocator-parameter",
5051          "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"
5052        },
5053        {
5054          "vuid": "VUID-vkCreateFramebuffer-pFramebuffer-parameter",
5055          "text": " <code>pFramebuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFramebuffer\">VkFramebuffer</a> handle"
5056        }
5057      ]
5058    },
5059    "VkFramebufferCreateInfo": {
5060      "core": [
5061        {
5062          "vuid": "VUID-VkFramebufferCreateInfo-attachmentCount-00876",
5063          "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be equal to the attachment count specified in <code>renderPass</code>"
5064        },
5065        {
5066          "vuid": "VUID-VkFramebufferCreateInfo-flags-02778",
5067          "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"
5068        },
5069        {
5070          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00877",
5071          "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>"
5072        },
5073        {
5074          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02633",
5075          "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>"
5076        },
5077        {
5078          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00879",
5079          "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>"
5080        },
5081        {
5082          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00880",
5083          "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>"
5084        },
5085        {
5086          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00881",
5087          "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>"
5088        },
5089        {
5090          "vuid": "VUID-VkFramebufferCreateInfo-flags-04533",
5091          "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, color, resolve, or depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a VkImageCreateInfo::<code>width</code> greater than or equal to <code>width</code>"
5092        },
5093        {
5094          "vuid": "VUID-VkFramebufferCreateInfo-flags-04534",
5095          "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, color, resolve, or depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a VkImageCreateInfo::<code>height</code> greater than or equal to <code>height</code>"
5096        },
5097        {
5098          "vuid": "VUID-VkFramebufferCreateInfo-flags-04535",
5099          "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, color, resolve, or depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a VkImageViewCreateInfo::<code>subresourceRange.pname</code>:layerCount greater than or equal to <code>layers</code>"
5100        },
5101        {
5102          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00883",
5103          "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"
5104        },
5105        {
5106          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00884",
5107          "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"
5108        },
5109        {
5110          "vuid": "VUID-VkFramebufferCreateInfo-width-00885",
5111          "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
5112        },
5113        {
5114          "vuid": "VUID-VkFramebufferCreateInfo-width-00886",
5115          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>"
5116        },
5117        {
5118          "vuid": "VUID-VkFramebufferCreateInfo-height-00887",
5119          "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
5120        },
5121        {
5122          "vuid": "VUID-VkFramebufferCreateInfo-height-00888",
5123          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>"
5124        },
5125        {
5126          "vuid": "VUID-VkFramebufferCreateInfo-layers-00889",
5127          "text": " <code>layers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
5128        },
5129        {
5130          "vuid": "VUID-VkFramebufferCreateInfo-layers-00890",
5131          "text": " <code>layers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferLayers</code>"
5132        },
5133        {
5134          "vuid": "VUID-VkFramebufferCreateInfo-flags-04113",
5135          "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>"
5136        },
5137        {
5138          "vuid": "VUID-VkFramebufferCreateInfo-sType-sType",
5139          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO</code>"
5140        },
5141        {
5142          "vuid": "VUID-VkFramebufferCreateInfo-pNext-pNext",
5143          "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>"
5144        },
5145        {
5146          "vuid": "VUID-VkFramebufferCreateInfo-sType-unique",
5147          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
5148        },
5149        {
5150          "vuid": "VUID-VkFramebufferCreateInfo-flags-parameter",
5151          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFramebufferCreateFlagBits\">VkFramebufferCreateFlagBits</a> values"
5152        },
5153        {
5154          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-parameter",
5155          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle"
5156        },
5157        {
5158          "vuid": "VUID-VkFramebufferCreateInfo-commonparent",
5159          "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>"
5160        }
5161      ],
5162      "(VK_VERSION_1_2,VK_KHR_depth_stencil_resolve)": [
5163        {
5164          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02634",
5165          "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>"
5166        }
5167      ],
5168      "(VK_EXT_fragment_density_map)": [
5169        {
5170          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02552",
5171          "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>"
5172        },
5173        {
5174          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02553",
5175          "text": " If <code>renderPass</code> has a fragment density map attachment and <a href=\"#features-fragmentDensityMapNonSubsampledImages\">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"
5176        },
5177        {
5178          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02555",
5179          "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\\)"
5180        },
5181        {
5182          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02556",
5183          "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\\)"
5184        }
5185      ],
5186      "(VK_VERSION_1_1,VK_KHR_multiview)": [
5187        {
5188          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-04536",
5189          "text": " If <code>renderPass</code> was specified with non-zero view masks, each element of <code>pAttachments</code> that is used as an input, color, resolve, or depth/stencil attachment by <code>renderPass</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"
5190        },
5191        {
5192          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02531",
5193          "text": " If <code>renderPass</code> was specified with non-zero view masks, <code>layers</code> <strong class=\"purple\">must</strong> be <code>1</code>"
5194        }
5195      ],
5196      "(VK_EXT_fragment_density_map)+!(VK_VERSION_1_1,VK_KHR_multiview)": [
5197        {
5198          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02744",
5199          "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>"
5200        }
5201      ],
5202      "(VK_EXT_fragment_density_map)+(VK_VERSION_1_1,VK_KHR_multiview)": [
5203        {
5204          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02746",
5205          "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"
5206        },
5207        {
5208          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02747",
5209          "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>"
5210        }
5211      ],
5212      "(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_1,VK_KHR_multiview)": [
5213        {
5214          "vuid": "VUID-VkFramebufferCreateInfo-flags-04537",
5215          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and <code>renderPass</code> was specified with non-zero view masks, each element of <code>pAttachments</code> that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> by <code>renderPass</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> that is either <code>1</code>, or greater than the index of the most significant bit set in any of those view masks"
5216        },
5217        {
5218          "vuid": "VUID-VkFramebufferCreateInfo-flags-04538",
5219          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and <code>renderPass</code> was not specified with non-zero view masks, each element of <code>pAttachments</code> that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> by <code>renderPass</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> that is either <code>1</code>, or greater than <code>layers</code>"
5220        }
5221      ],
5222      "(VK_KHR_fragment_shading_rate)": [
5223        {
5224          "vuid": "VUID-VkFramebufferCreateInfo-flags-04539",
5225          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, an element of <code>pAttachments</code> that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> have a width at least as large as <span class=\"eq\">{lceil}<code>width</code> \\ <code>texelWidth</code>{rceil}</span>, where <code>texelWidth</code> is the largest value of <code>shadingRateAttachmentTexelSize.width</code> in a <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> which references that attachment"
5226        },
5227        {
5228          "vuid": "VUID-VkFramebufferCreateInfo-flags-04540",
5229          "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, an element of <code>pAttachments</code> that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> have a height at least as large as <span class=\"eq\">{lceil}<code>height</code> \\ <code>texelHeight</code>{rceil}</span>, where <code>texelHeight</code> is the largest value of <code>shadingRateAttachmentTexelSize.height</code> in a <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> which references that attachment"
5230        },
5231        {
5232          "vuid": "VUID-VkFramebufferCreateInfo-flags-04548",
5233          "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 fragment shading rate attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>"
5234        }
5235      ],
5236      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
5237        {
5238          "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00891",
5239          "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"
5240        }
5241      ],
5242      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
5243        {
5244          "vuid": "VUID-VkFramebufferCreateInfo-flags-03189",
5245          "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>"
5246        },
5247        {
5248          "vuid": "VUID-VkFramebufferCreateInfo-flags-03190",
5249          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a>"
5250        },
5251        {
5252          "vuid": "VUID-VkFramebufferCreateInfo-flags-03191",
5253          "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>attachmentImageInfoCount</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a> in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be equal to either zero or <code>attachmentCount</code>"
5254        },
5255        {
5256          "vuid": "VUID-VkFramebufferCreateInfo-flags-04541",
5257          "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 an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a> in the <code>pNext</code> chain that is used as an input, color, resolve or depth/stencil attachment in <code>pRenderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>width</code>"
5258        },
5259        {
5260          "vuid": "VUID-VkFramebufferCreateInfo-flags-04542",
5261          "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 an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a> in the <code>pNext</code> chain that is used as an input, color, resolve or depth/stencil attachment in <code>pRenderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>height</code>"
5262        },
5263        {
5264          "vuid": "VUID-VkFramebufferCreateInfo-flags-03201",
5265          "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>"
5266        },
5267        {
5268          "vuid": "VUID-VkFramebufferCreateInfo-flags-03202",
5269          "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>"
5270        },
5271        {
5272          "vuid": "VUID-VkFramebufferCreateInfo-flags-03204",
5273          "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>"
5274        },
5275        {
5276          "vuid": "VUID-VkFramebufferCreateInfo-flags-03205",
5277          "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>"
5278        }
5279      ],
5280      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_EXT_fragment_density_map)": [
5281        {
5282          "vuid": "VUID-VkFramebufferCreateInfo-flags-03196",
5283          "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 an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a> 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\\)"
5284        },
5285        {
5286          "vuid": "VUID-VkFramebufferCreateInfo-flags-03197",
5287          "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\\)"
5288        }
5289      ],
5290      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_KHR_fragment_shading_rate)": [
5291        {
5292          "vuid": "VUID-VkFramebufferCreateInfo-flags-04543",
5293          "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 an instance of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> in the <code>pNext</code> chain that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> be greater than or equal to <span class=\"eq\">{lceil}<code>width</code> \\ <code>texelWidth</code>{rceil}</span>, where <code>texelWidth</code> is the largest value of <code>shadingRateAttachmentTexelSize.width</code> in a <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> which references that attachment"
5294        },
5295        {
5296          "vuid": "VUID-VkFramebufferCreateInfo-flags-04544",
5297          "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 an instance of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> in the <code>pNext</code> chain that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> be greater than or equal to <span class=\"eq\">{lceil}<code>height</code> \\ <code>texelHeight</code>{rceil}</span>, where <code>texelHeight</code> is the largest value of <code>shadingRateAttachmentTexelSize.height</code> in a <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> which references that attachment"
5298        },
5299        {
5300          "vuid": "VUID-VkFramebufferCreateInfo-flags-04545",
5301          "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 an instance of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> in the <code>pNext</code> chain that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> be either <code>1</code>, or greater than or equal to <code>layers</code>"
5302        }
5303      ],
5304      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_VERSION_1_1,VK_KHR_multiview)": [
5305        {
5306          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-03198",
5307          "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 used as an input, color, resolve, or depth/stencil attachment in <code>pRenderPass</code> <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>"
5308        },
5309        {
5310          "vuid": "VUID-VkFramebufferCreateInfo-renderPass-04546",
5311          "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 used as an input, color, resolve, or depth/stencil attachment in <code>pRenderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>layers</code>"
5312        }
5313      ],
5314      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+!(VK_VERSION_1_1+VK_KHR_multiview)": [
5315        {
5316          "vuid": "VUID-VkFramebufferCreateInfo-flags-04547",
5317          "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 used as an input, color, resolve, or depth/stencil attachment in <code>pRenderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>layers</code>"
5318        }
5319      ],
5320      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_KHR_depth_stencil_resolve)": [
5321        {
5322          "vuid": "VUID-VkFramebufferCreateInfo-flags-03203",
5323          "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>"
5324        }
5325      ],
5326      "(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
5327        {
5328          "vuid": "VUID-VkFramebufferCreateInfo-flags-04549",
5329          "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 fragment shading rate attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>"
5330        }
5331      ]
5332    },
5333    "VkFramebufferAttachmentsCreateInfo": {
5334      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
5335        {
5336          "vuid": "VUID-VkFramebufferAttachmentsCreateInfo-sType-sType",
5337          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO</code>"
5338        },
5339        {
5340          "vuid": "VUID-VkFramebufferAttachmentsCreateInfo-pAttachmentImageInfos-parameter",
5341          "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"
5342        }
5343      ]
5344    },
5345    "VkFramebufferAttachmentImageInfo": {
5346      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
5347        {
5348          "vuid": "VUID-VkFramebufferAttachmentImageInfo-sType-sType",
5349          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO</code>"
5350        },
5351        {
5352          "vuid": "VUID-VkFramebufferAttachmentImageInfo-pNext-pNext",
5353          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5354        },
5355        {
5356          "vuid": "VUID-VkFramebufferAttachmentImageInfo-flags-parameter",
5357          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
5358        },
5359        {
5360          "vuid": "VUID-VkFramebufferAttachmentImageInfo-usage-parameter",
5361          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
5362        },
5363        {
5364          "vuid": "VUID-VkFramebufferAttachmentImageInfo-usage-requiredbitmask",
5365          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
5366        },
5367        {
5368          "vuid": "VUID-VkFramebufferAttachmentImageInfo-pViewFormats-parameter",
5369          "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"
5370        }
5371      ]
5372    },
5373    "vkDestroyFramebuffer": {
5374      "core": [
5375        {
5376          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00892",
5377          "text": " All submitted commands that refer to <code>framebuffer</code> <strong class=\"purple\">must</strong> have completed execution"
5378        },
5379        {
5380          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00893",
5381          "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"
5382        },
5383        {
5384          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00894",
5385          "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>"
5386        },
5387        {
5388          "vuid": "VUID-vkDestroyFramebuffer-device-parameter",
5389          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
5390        },
5391        {
5392          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parameter",
5393          "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"
5394        },
5395        {
5396          "vuid": "VUID-vkDestroyFramebuffer-pAllocator-parameter",
5397          "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"
5398        },
5399        {
5400          "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parent",
5401          "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>"
5402        }
5403      ]
5404    },
5405    "vkCmdBeginRenderPass": {
5406      "core": [
5407        {
5408          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00895",
5409          "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>"
5410        },
5411        {
5412          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00897",
5413          "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>"
5414        },
5415        {
5416          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00898",
5417          "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>"
5418        },
5419        {
5420          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00899",
5421          "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>"
5422        },
5423        {
5424          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00900",
5425          "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>"
5426        },
5427        {
5428          "vuid": "VUID-vkCmdBeginRenderPass-srcStageMask-00901",
5429          "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"
5430        },
5431        {
5432          "vuid": "VUID-vkCmdBeginRenderPass-framebuffer-02532",
5433          "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"
5434        },
5435        {
5436          "vuid": "VUID-vkCmdBeginRenderPass-pAttachments-04102",
5437          "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>"
5438        },
5439        {
5440          "vuid": "VUID-vkCmdBeginRenderPass-pAttachments-04103",
5441          "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>"
5442        },
5443        {
5444          "vuid": "VUID-vkCmdBeginRenderPass-pAttachments-04104",
5445          "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>"
5446        },
5447        {
5448          "vuid": "VUID-vkCmdBeginRenderPass-pAttachments-04105",
5449          "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>"
5450        },
5451        {
5452          "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-parameter",
5453          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
5454        },
5455        {
5456          "vuid": "VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter",
5457          "text": " <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a> structure"
5458        },
5459        {
5460          "vuid": "VUID-vkCmdBeginRenderPass-contents-parameter",
5461          "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
5462        },
5463        {
5464          "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-recording",
5465          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
5466        },
5467        {
5468          "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-cmdpool",
5469          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
5470        },
5471        {
5472          "vuid": "VUID-vkCmdBeginRenderPass-renderpass",
5473          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
5474        },
5475        {
5476          "vuid": "VUID-vkCmdBeginRenderPass-bufferlevel",
5477          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
5478        }
5479      ],
5480      "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [
5481        {
5482          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00896",
5483          "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>"
5484        }
5485      ],
5486      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
5487        {
5488          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-01758",
5489          "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>"
5490        }
5491      ],
5492      "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
5493        {
5494          "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-02842",
5495          "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>"
5496        },
5497        {
5498          "vuid": "VUID-vkCmdBeginRenderPass-stencilInitialLayout-02843",
5499          "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>"
5500        }
5501      ]
5502    },
5503    "vkCmdBeginRenderPass2": {
5504      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
5505        {
5506          "vuid": "VUID-vkCmdBeginRenderPass2-framebuffer-02779",
5507          "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"
5508        },
5509        {
5510          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03094",
5511          "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>"
5512        },
5513        {
5514          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03096",
5515          "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>"
5516        },
5517        {
5518          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03097",
5519          "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>"
5520        },
5521        {
5522          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03098",
5523          "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>"
5524        },
5525        {
5526          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03099",
5527          "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>"
5528        },
5529        {
5530          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03100",
5531          "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>"
5532        },
5533        {
5534          "vuid": "VUID-vkCmdBeginRenderPass2-srcStageMask-03101",
5535          "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"
5536        },
5537        {
5538          "vuid": "VUID-vkCmdBeginRenderPass2-framebuffer-02533",
5539          "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"
5540        },
5541        {
5542          "vuid": "VUID-vkCmdBeginRenderPass2-pAttachments-04106",
5543          "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>"
5544        },
5545        {
5546          "vuid": "VUID-vkCmdBeginRenderPass2-pAttachments-04107",
5547          "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>"
5548        },
5549        {
5550          "vuid": "VUID-vkCmdBeginRenderPass2-pAttachments-04108",
5551          "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>"
5552        },
5553        {
5554          "vuid": "VUID-vkCmdBeginRenderPass2-pAttachments-04109",
5555          "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>"
5556        },
5557        {
5558          "vuid": "VUID-vkCmdBeginRenderPass2-commandBuffer-parameter",
5559          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
5560        },
5561        {
5562          "vuid": "VUID-vkCmdBeginRenderPass2-pRenderPassBegin-parameter",
5563          "text": " <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a> structure"
5564        },
5565        {
5566          "vuid": "VUID-vkCmdBeginRenderPass2-pSubpassBeginInfo-parameter",
5567          "text": " <code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassBeginInfo\">VkSubpassBeginInfo</a> structure"
5568        },
5569        {
5570          "vuid": "VUID-vkCmdBeginRenderPass2-commandBuffer-recording",
5571          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
5572        },
5573        {
5574          "vuid": "VUID-vkCmdBeginRenderPass2-commandBuffer-cmdpool",
5575          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
5576        },
5577        {
5578          "vuid": "VUID-vkCmdBeginRenderPass2-renderpass",
5579          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
5580        },
5581        {
5582          "vuid": "VUID-vkCmdBeginRenderPass2-bufferlevel",
5583          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
5584        }
5585      ],
5586      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
5587        {
5588          "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-02844",
5589          "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>"
5590        },
5591        {
5592          "vuid": "VUID-vkCmdBeginRenderPass2-stencilInitialLayout-02845",
5593          "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>"
5594        }
5595      ]
5596    },
5597    "VkRenderPassBeginInfo": {
5598      "core": [
5599        {
5600          "vuid": "VUID-VkRenderPassBeginInfo-clearValueCount-00902",
5601          "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>"
5602        },
5603        {
5604          "vuid": "VUID-VkRenderPassBeginInfo-renderPass-00904",
5605          "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>"
5606        },
5607        {
5608          "vuid": "VUID-VkRenderPassBeginInfo-sType-sType",
5609          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO</code>"
5610        },
5611        {
5612          "vuid": "VUID-VkRenderPassBeginInfo-pNext-pNext",
5613          "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>"
5614        },
5615        {
5616          "vuid": "VUID-VkRenderPassBeginInfo-sType-unique",
5617          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
5618        },
5619        {
5620          "vuid": "VUID-VkRenderPassBeginInfo-renderPass-parameter",
5621          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle"
5622        },
5623        {
5624          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-parameter",
5625          "text": " <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFramebuffer\">VkFramebuffer</a> handle"
5626        },
5627        {
5628          "vuid": "VUID-VkRenderPassBeginInfo-pClearValues-parameter",
5629          "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"
5630        },
5631        {
5632          "vuid": "VUID-VkRenderPassBeginInfo-commonparent",
5633          "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>"
5634        }
5635      ],
5636      "!(VK_VERSION_1_1,VK_KHR_device_group)": [
5637        {
5638          "vuid": "VUID-VkRenderPassBeginInfo-renderArea-02846",
5639          "text": " <code>renderArea.offset.x</code> <strong class=\"purple\">must</strong> be greater than or equal to 0"
5640        },
5641        {
5642          "vuid": "VUID-VkRenderPassBeginInfo-renderArea-02847",
5643          "text": " <code>renderArea.offset.y</code> <strong class=\"purple\">must</strong> be greater than or equal to 0"
5644        },
5645        {
5646          "vuid": "VUID-VkRenderPassBeginInfo-renderArea-02848",
5647          "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"
5648        },
5649        {
5650          "vuid": "VUID-VkRenderPassBeginInfo-renderArea-02849",
5651          "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"
5652        }
5653      ],
5654      "(VK_VERSION_1_1,VK_KHR_device_group)": [
5655        {
5656          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02850",
5657          "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"
5658        },
5659        {
5660          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02851",
5661          "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"
5662        },
5663        {
5664          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02852",
5665          "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"
5666        },
5667        {
5668          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02853",
5669          "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"
5670        },
5671        {
5672          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02854",
5673          "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"
5674        },
5675        {
5676          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02855",
5677          "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"
5678        },
5679        {
5680          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02856",
5681          "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"
5682        },
5683        {
5684          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02857",
5685          "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"
5686        }
5687      ],
5688      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
5689        {
5690          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03207",
5691          "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"
5692        },
5693        {
5694          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03208",
5695          "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>"
5696        },
5697        {
5698          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-02780",
5699          "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> have been created on the same <a href=\"#VkDevice\">VkDevice</a> as <code>framebuffer</code> and <code>renderPass</code>"
5700        },
5701        {
5702          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03209",
5703          "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=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachments</code> used to create <code>framebuffer</code>"
5704        },
5705        {
5706          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03210",
5707          "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>"
5708        },
5709        {
5710          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03211",
5711          "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>"
5712        },
5713        {
5714          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03212",
5715          "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>"
5716        },
5717        {
5718          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03213",
5719          "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>"
5720        },
5721        {
5722          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03214",
5723          "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>"
5724        },
5725        {
5726          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03215",
5727          "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>"
5728        },
5729        {
5730          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03216",
5731          "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>"
5732        },
5733        {
5734          "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03217",
5735          "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>"
5736        }
5737      ],
5738      "(VK_QCOM_render_pass_transform)": [
5739        {
5740          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02869",
5741          "text": " If the <code>pNext</code> chain includes <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>, <code>renderArea.offset</code> <strong class=\"purple\">must</strong> equal (0,0)"
5742        },
5743        {
5744          "vuid": "VUID-VkRenderPassBeginInfo-pNext-02870",
5745          "text": " If the <code>pNext</code> chain includes <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>, <code>renderArea.extent</code> transformed by <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>::<code>transform</code> <strong class=\"purple\">must</strong> equal the <code>framebuffer</code> dimensions"
5746        }
5747      ]
5748    },
5749    "VkRenderPassSampleLocationsBeginInfoEXT": {
5750      "(VK_EXT_sample_locations)": [
5751        {
5752          "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-sType-sType",
5753          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT</code>"
5754        },
5755        {
5756          "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pAttachmentInitialSampleLocations-parameter",
5757          "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"
5758        },
5759        {
5760          "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pPostSubpassSampleLocations-parameter",
5761          "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"
5762        }
5763      ]
5764    },
5765    "VkAttachmentSampleLocationsEXT": {
5766      "(VK_EXT_sample_locations)": [
5767        {
5768          "vuid": "VUID-VkAttachmentSampleLocationsEXT-attachmentIndex-01531",
5769          "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"
5770        },
5771        {
5772          "vuid": "VUID-VkAttachmentSampleLocationsEXT-sampleLocationsInfo-parameter",
5773          "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure"
5774        }
5775      ]
5776    },
5777    "VkSubpassSampleLocationsEXT": {
5778      "(VK_EXT_sample_locations)": [
5779        {
5780          "vuid": "VUID-VkSubpassSampleLocationsEXT-subpassIndex-01532",
5781          "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"
5782        },
5783        {
5784          "vuid": "VUID-VkSubpassSampleLocationsEXT-sampleLocationsInfo-parameter",
5785          "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure"
5786        }
5787      ]
5788    },
5789    "VkRenderPassTransformBeginInfoQCOM": {
5790      "(VK_QCOM_render_pass_transform)": [
5791        {
5792          "vuid": "VUID-VkRenderPassTransformBeginInfoQCOM-transform-02871",
5793          "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>"
5794        },
5795        {
5796          "vuid": "VUID-VkRenderPassTransformBeginInfoQCOM-flags-02872",
5797          "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>"
5798        },
5799        {
5800          "vuid": "VUID-VkRenderPassTransformBeginInfoQCOM-sType-sType",
5801          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM</code>"
5802        }
5803      ]
5804    },
5805    "VkSubpassBeginInfo": {
5806      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
5807        {
5808          "vuid": "VUID-VkSubpassBeginInfo-sType-sType",
5809          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO</code>"
5810        },
5811        {
5812          "vuid": "VUID-VkSubpassBeginInfo-pNext-pNext",
5813          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5814        },
5815        {
5816          "vuid": "VUID-VkSubpassBeginInfo-contents-parameter",
5817          "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
5818        }
5819      ]
5820    },
5821    "VkDeviceGroupRenderPassBeginInfo": {
5822      "(VK_VERSION_1_1,VK_KHR_device_group)": [
5823        {
5824          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00905",
5825          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
5826        },
5827        {
5828          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00906",
5829          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
5830        },
5831        {
5832          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00907",
5833          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a subset of the command buffer&#8217;s initial device mask"
5834        },
5835        {
5836          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceRenderAreaCount-00908",
5837          "text": " <code>deviceRenderAreaCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
5838        },
5839        {
5840          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-sType-sType",
5841          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO</code>"
5842        },
5843        {
5844          "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-pDeviceRenderAreas-parameter",
5845          "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"
5846        }
5847      ]
5848    },
5849    "VkRenderPassAttachmentBeginInfo": {
5850      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
5851        {
5852          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-03218",
5853          "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> only specify a single mip level"
5854        },
5855        {
5856          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-03219",
5857          "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle"
5858        },
5859        {
5860          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-04114",
5861          "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>"
5862        },
5863        {
5864          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-sType-sType",
5865          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO</code>"
5866        },
5867        {
5868          "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-parameter",
5869          "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"
5870        }
5871      ]
5872    },
5873    "vkGetRenderAreaGranularity": {
5874      "core": [
5875        {
5876          "vuid": "VUID-vkGetRenderAreaGranularity-device-parameter",
5877          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
5878        },
5879        {
5880          "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parameter",
5881          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle"
5882        },
5883        {
5884          "vuid": "VUID-vkGetRenderAreaGranularity-pGranularity-parameter",
5885          "text": " <code>pGranularity</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExtent2D\">VkExtent2D</a> structure"
5886        },
5887        {
5888          "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parent",
5889          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5890        }
5891      ]
5892    },
5893    "vkCmdNextSubpass": {
5894      "core": [
5895        {
5896          "vuid": "VUID-vkCmdNextSubpass-None-00909",
5897          "text": " The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one"
5898        },
5899        {
5900          "vuid": "VUID-vkCmdNextSubpass-commandBuffer-parameter",
5901          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
5902        },
5903        {
5904          "vuid": "VUID-vkCmdNextSubpass-contents-parameter",
5905          "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
5906        },
5907        {
5908          "vuid": "VUID-vkCmdNextSubpass-commandBuffer-recording",
5909          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
5910        },
5911        {
5912          "vuid": "VUID-vkCmdNextSubpass-commandBuffer-cmdpool",
5913          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
5914        },
5915        {
5916          "vuid": "VUID-vkCmdNextSubpass-renderpass",
5917          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
5918        },
5919        {
5920          "vuid": "VUID-vkCmdNextSubpass-bufferlevel",
5921          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
5922        }
5923      ],
5924      "(VK_EXT_transform_feedback)": [
5925        {
5926          "vuid": "VUID-vkCmdNextSubpass-None-02349",
5927          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
5928        }
5929      ]
5930    },
5931    "vkCmdNextSubpass2": {
5932      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
5933        {
5934          "vuid": "VUID-vkCmdNextSubpass2-None-03102",
5935          "text": " The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one"
5936        },
5937        {
5938          "vuid": "VUID-vkCmdNextSubpass2-commandBuffer-parameter",
5939          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
5940        },
5941        {
5942          "vuid": "VUID-vkCmdNextSubpass2-pSubpassBeginInfo-parameter",
5943          "text": " <code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassBeginInfo\">VkSubpassBeginInfo</a> structure"
5944        },
5945        {
5946          "vuid": "VUID-vkCmdNextSubpass2-pSubpassEndInfo-parameter",
5947          "text": " <code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassEndInfo\">VkSubpassEndInfo</a> structure"
5948        },
5949        {
5950          "vuid": "VUID-vkCmdNextSubpass2-commandBuffer-recording",
5951          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
5952        },
5953        {
5954          "vuid": "VUID-vkCmdNextSubpass2-commandBuffer-cmdpool",
5955          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
5956        },
5957        {
5958          "vuid": "VUID-vkCmdNextSubpass2-renderpass",
5959          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
5960        },
5961        {
5962          "vuid": "VUID-vkCmdNextSubpass2-bufferlevel",
5963          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
5964        }
5965      ],
5966      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [
5967        {
5968          "vuid": "VUID-vkCmdNextSubpass2-None-02350",
5969          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
5970        }
5971      ]
5972    },
5973    "vkCmdEndRenderPass": {
5974      "core": [
5975        {
5976          "vuid": "VUID-vkCmdEndRenderPass-None-00910",
5977          "text": " The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one"
5978        },
5979        {
5980          "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-parameter",
5981          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
5982        },
5983        {
5984          "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-recording",
5985          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
5986        },
5987        {
5988          "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-cmdpool",
5989          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
5990        },
5991        {
5992          "vuid": "VUID-vkCmdEndRenderPass-renderpass",
5993          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
5994        },
5995        {
5996          "vuid": "VUID-vkCmdEndRenderPass-bufferlevel",
5997          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
5998        }
5999      ],
6000      "(VK_EXT_transform_feedback)": [
6001        {
6002          "vuid": "VUID-vkCmdEndRenderPass-None-02351",
6003          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
6004        }
6005      ]
6006    },
6007    "vkCmdEndRenderPass2": {
6008      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
6009        {
6010          "vuid": "VUID-vkCmdEndRenderPass2-None-03103",
6011          "text": " The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one"
6012        },
6013        {
6014          "vuid": "VUID-vkCmdEndRenderPass2-commandBuffer-parameter",
6015          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
6016        },
6017        {
6018          "vuid": "VUID-vkCmdEndRenderPass2-pSubpassEndInfo-parameter",
6019          "text": " <code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassEndInfo\">VkSubpassEndInfo</a> structure"
6020        },
6021        {
6022          "vuid": "VUID-vkCmdEndRenderPass2-commandBuffer-recording",
6023          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
6024        },
6025        {
6026          "vuid": "VUID-vkCmdEndRenderPass2-commandBuffer-cmdpool",
6027          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
6028        },
6029        {
6030          "vuid": "VUID-vkCmdEndRenderPass2-renderpass",
6031          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
6032        },
6033        {
6034          "vuid": "VUID-vkCmdEndRenderPass2-bufferlevel",
6035          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
6036        }
6037      ],
6038      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [
6039        {
6040          "vuid": "VUID-vkCmdEndRenderPass2-None-02352",
6041          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
6042        }
6043      ]
6044    },
6045    "VkSubpassEndInfo": {
6046      "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
6047        {
6048          "vuid": "VUID-VkSubpassEndInfo-sType-sType",
6049          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_END_INFO</code>"
6050        },
6051        {
6052          "vuid": "VUID-VkSubpassEndInfo-pNext-pNext",
6053          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6054        }
6055      ]
6056    },
6057    "vkCreateShaderModule": {
6058      "core": [
6059        {
6060          "vuid": "VUID-vkCreateShaderModule-device-parameter",
6061          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
6062        },
6063        {
6064          "vuid": "VUID-vkCreateShaderModule-pCreateInfo-parameter",
6065          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkShaderModuleCreateInfo\">VkShaderModuleCreateInfo</a> structure"
6066        },
6067        {
6068          "vuid": "VUID-vkCreateShaderModule-pAllocator-parameter",
6069          "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"
6070        },
6071        {
6072          "vuid": "VUID-vkCreateShaderModule-pShaderModule-parameter",
6073          "text": " <code>pShaderModule</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkShaderModule\">VkShaderModule</a> handle"
6074        }
6075      ]
6076    },
6077    "VkShaderModuleCreateInfo": {
6078      "core": [
6079        {
6080          "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01085",
6081          "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be greater than 0"
6082        },
6083        {
6084          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01089",
6085          "text": " <code>pCode</code> <strong class=\"purple\">must</strong> declare the <code>Shader</code> capability for SPIR-V code"
6086        },
6087        {
6088          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01090",
6089          "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"
6090        },
6091        {
6092          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01091",
6093          "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"
6094        },
6095        {
6096          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-04146",
6097          "text": " <code>pCode</code> <strong class=\"purple\">must</strong> not declare any SPIR-V extension that is not supported by the API, as described by the <a href=\"#spirvenv-extensions\">Extension</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix"
6098        },
6099        {
6100          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-04147",
6101          "text": " If <code>pCode</code> declares any of the SPIR-V extensions listed in the <a href=\"#spirvenv-extensions-table\">SPIR-V Environment</a> appendix, one of the corresponding requirements <strong class=\"purple\">must</strong> be satisfied"
6102        },
6103        {
6104          "vuid": "VUID-VkShaderModuleCreateInfo-sType-sType",
6105          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO</code>"
6106        },
6107        {
6108          "vuid": "VUID-VkShaderModuleCreateInfo-pNext-pNext",
6109          "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>"
6110        },
6111        {
6112          "vuid": "VUID-VkShaderModuleCreateInfo-sType-unique",
6113          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
6114        },
6115        {
6116          "vuid": "VUID-VkShaderModuleCreateInfo-flags-zerobitmask",
6117          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
6118        },
6119        {
6120          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-parameter",
6121          "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"
6122        }
6123      ],
6124      "!(VK_NV_glsl_shader)": [
6125        {
6126          "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01086",
6127          "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4"
6128        },
6129        {
6130          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01087",
6131          "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>"
6132        },
6133        {
6134          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01088",
6135          "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"
6136        }
6137      ],
6138      "(VK_NV_glsl_shader)": [
6139        {
6140          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01376",
6141          "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"
6142        },
6143        {
6144          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01377",
6145          "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"
6146        },
6147        {
6148          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01378",
6149          "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"
6150        },
6151        {
6152          "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01379",
6153          "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"
6154        }
6155      ]
6156    },
6157    "VkShaderModuleValidationCacheCreateInfoEXT": {
6158      "(VK_EXT_validation_cache)": [
6159        {
6160          "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-sType-sType",
6161          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT</code>"
6162        },
6163        {
6164          "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-validationCache-parameter",
6165          "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle"
6166        }
6167      ]
6168    },
6169    "vkDestroyShaderModule": {
6170      "core": [
6171        {
6172          "vuid": "VUID-vkDestroyShaderModule-shaderModule-01092",
6173          "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"
6174        },
6175        {
6176          "vuid": "VUID-vkDestroyShaderModule-shaderModule-01093",
6177          "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>"
6178        },
6179        {
6180          "vuid": "VUID-vkDestroyShaderModule-device-parameter",
6181          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
6182        },
6183        {
6184          "vuid": "VUID-vkDestroyShaderModule-shaderModule-parameter",
6185          "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"
6186        },
6187        {
6188          "vuid": "VUID-vkDestroyShaderModule-pAllocator-parameter",
6189          "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"
6190        },
6191        {
6192          "vuid": "VUID-vkDestroyShaderModule-shaderModule-parent",
6193          "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>"
6194        }
6195      ]
6196    },
6197    "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV": {
6198      "(VK_NV_cooperative_matrix)": [
6199        {
6200          "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter",
6201          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
6202        },
6203        {
6204          "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pPropertyCount-parameter",
6205          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
6206        },
6207        {
6208          "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pProperties-parameter",
6209          "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"
6210        }
6211      ]
6212    },
6213    "VkCooperativeMatrixPropertiesNV": {
6214      "(VK_NV_cooperative_matrix)": [
6215        {
6216          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-sType-sType",
6217          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>"
6218        },
6219        {
6220          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-pNext-pNext",
6221          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6222        },
6223        {
6224          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-AType-parameter",
6225          "text": " <code>AType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
6226        },
6227        {
6228          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-BType-parameter",
6229          "text": " <code>BType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
6230        },
6231        {
6232          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-CType-parameter",
6233          "text": " <code>CType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
6234        },
6235        {
6236          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-DType-parameter",
6237          "text": " <code>DType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
6238        },
6239        {
6240          "vuid": "VUID-VkCooperativeMatrixPropertiesNV-scope-parameter",
6241          "text": " <code>scope</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkScopeNV\">VkScopeNV</a> value"
6242        }
6243      ]
6244    },
6245    "vkCreateValidationCacheEXT": {
6246      "(VK_EXT_validation_cache)": [
6247        {
6248          "vuid": "VUID-vkCreateValidationCacheEXT-device-parameter",
6249          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
6250        },
6251        {
6252          "vuid": "VUID-vkCreateValidationCacheEXT-pCreateInfo-parameter",
6253          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkValidationCacheCreateInfoEXT\">VkValidationCacheCreateInfoEXT</a> structure"
6254        },
6255        {
6256          "vuid": "VUID-vkCreateValidationCacheEXT-pAllocator-parameter",
6257          "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"
6258        },
6259        {
6260          "vuid": "VUID-vkCreateValidationCacheEXT-pValidationCache-parameter",
6261          "text": " <code>pValidationCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle"
6262        }
6263      ]
6264    },
6265    "VkValidationCacheCreateInfoEXT": {
6266      "(VK_EXT_validation_cache)": [
6267        {
6268          "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01534",
6269          "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"
6270        },
6271        {
6272          "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01535",
6273          "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>"
6274        },
6275        {
6276          "vuid": "VUID-VkValidationCacheCreateInfoEXT-sType-sType",
6277          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT</code>"
6278        },
6279        {
6280          "vuid": "VUID-VkValidationCacheCreateInfoEXT-pNext-pNext",
6281          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6282        },
6283        {
6284          "vuid": "VUID-VkValidationCacheCreateInfoEXT-flags-zerobitmask",
6285          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
6286        },
6287        {
6288          "vuid": "VUID-VkValidationCacheCreateInfoEXT-pInitialData-parameter",
6289          "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"
6290        }
6291      ]
6292    },
6293    "vkMergeValidationCachesEXT": {
6294      "(VK_EXT_validation_cache)": [
6295        {
6296          "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-01536",
6297          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches"
6298        },
6299        {
6300          "vuid": "VUID-vkMergeValidationCachesEXT-device-parameter",
6301          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
6302        },
6303        {
6304          "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parameter",
6305          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle"
6306        },
6307        {
6308          "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parameter",
6309          "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"
6310        },
6311        {
6312          "vuid": "VUID-vkMergeValidationCachesEXT-srcCacheCount-arraylength",
6313          "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6314        },
6315        {
6316          "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parent",
6317          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
6318        },
6319        {
6320          "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parent",
6321          "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
6322        }
6323      ]
6324    },
6325    "vkGetValidationCacheDataEXT": {
6326      "(VK_EXT_validation_cache)": [
6327        {
6328          "vuid": "VUID-vkGetValidationCacheDataEXT-device-parameter",
6329          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
6330        },
6331        {
6332          "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parameter",
6333          "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle"
6334        },
6335        {
6336          "vuid": "VUID-vkGetValidationCacheDataEXT-pDataSize-parameter",
6337          "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
6338        },
6339        {
6340          "vuid": "VUID-vkGetValidationCacheDataEXT-pData-parameter",
6341          "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"
6342        },
6343        {
6344          "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parent",
6345          "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
6346        }
6347      ]
6348    },
6349    "vkDestroyValidationCacheEXT": {
6350      "(VK_EXT_validation_cache)": [
6351        {
6352          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01537",
6353          "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"
6354        },
6355        {
6356          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01538",
6357          "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>"
6358        },
6359        {
6360          "vuid": "VUID-vkDestroyValidationCacheEXT-device-parameter",
6361          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
6362        },
6363        {
6364          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parameter",
6365          "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"
6366        },
6367        {
6368          "vuid": "VUID-vkDestroyValidationCacheEXT-pAllocator-parameter",
6369          "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"
6370        },
6371        {
6372          "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parent",
6373          "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>"
6374        }
6375      ]
6376    },
6377    "vkCreateComputePipelines": {
6378      "core": [
6379        {
6380          "vuid": "VUID-vkCreateComputePipelines-flags-00695",
6381          "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"
6382        },
6383        {
6384          "vuid": "VUID-vkCreateComputePipelines-flags-00696",
6385          "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"
6386        },
6387        {
6388          "vuid": "VUID-vkCreateComputePipelines-device-parameter",
6389          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
6390        },
6391        {
6392          "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parameter",
6393          "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"
6394        },
6395        {
6396          "vuid": "VUID-vkCreateComputePipelines-pCreateInfos-parameter",
6397          "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"
6398        },
6399        {
6400          "vuid": "VUID-vkCreateComputePipelines-pAllocator-parameter",
6401          "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"
6402        },
6403        {
6404          "vuid": "VUID-vkCreateComputePipelines-pPipelines-parameter",
6405          "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"
6406        },
6407        {
6408          "vuid": "VUID-vkCreateComputePipelines-createInfoCount-arraylength",
6409          "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6410        },
6411        {
6412          "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parent",
6413          "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>"
6414        }
6415      ],
6416      "(VK_EXT_pipeline_creation_cache_control)": [
6417        {
6418          "vuid": "VUID-vkCreateComputePipelines-pipelineCache-02873",
6419          "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>"
6420        }
6421      ]
6422    },
6423    "VkComputePipelineCreateInfo": {
6424      "core": [
6425        {
6426          "vuid": "VUID-VkComputePipelineCreateInfo-flags-00697",
6427          "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>"
6428        },
6429        {
6430          "vuid": "VUID-VkComputePipelineCreateInfo-flags-00698",
6431          "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"
6432        },
6433        {
6434          "vuid": "VUID-VkComputePipelineCreateInfo-flags-00699",
6435          "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>"
6436        },
6437        {
6438          "vuid": "VUID-VkComputePipelineCreateInfo-flags-00700",
6439          "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"
6440        },
6441        {
6442          "vuid": "VUID-VkComputePipelineCreateInfo-stage-00701",
6443          "text": " The <code>stage</code> member of <code>stage</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>"
6444        },
6445        {
6446          "vuid": "VUID-VkComputePipelineCreateInfo-stage-00702",
6447          "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"
6448        },
6449        {
6450          "vuid": "VUID-VkComputePipelineCreateInfo-layout-00703",
6451          "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>"
6452        },
6453        {
6454          "vuid": "VUID-VkComputePipelineCreateInfo-layout-01687",
6455          "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>"
6456        },
6457        {
6458          "vuid": "VUID-VkComputePipelineCreateInfo-sType-sType",
6459          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO</code>"
6460        },
6461        {
6462          "vuid": "VUID-VkComputePipelineCreateInfo-pNext-pNext",
6463          "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>"
6464        },
6465        {
6466          "vuid": "VUID-VkComputePipelineCreateInfo-sType-unique",
6467          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
6468        },
6469        {
6470          "vuid": "VUID-VkComputePipelineCreateInfo-flags-parameter",
6471          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
6472        },
6473        {
6474          "vuid": "VUID-VkComputePipelineCreateInfo-stage-parameter",
6475          "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structure"
6476        },
6477        {
6478          "vuid": "VUID-VkComputePipelineCreateInfo-layout-parameter",
6479          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
6480        },
6481        {
6482          "vuid": "VUID-VkComputePipelineCreateInfo-commonparent",
6483          "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>"
6484        }
6485      ],
6486      "(VK_KHR_pipeline_library)": [
6487        {
6488          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03364",
6489          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>"
6490        }
6491      ],
6492      "(VK_KHR_ray_tracing)": [
6493        {
6494          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03365",
6495          "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>"
6496        },
6497        {
6498          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03366",
6499          "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>"
6500        },
6501        {
6502          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03367",
6503          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>"
6504        },
6505        {
6506          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03368",
6507          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>"
6508        },
6509        {
6510          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03369",
6511          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>"
6512        },
6513        {
6514          "vuid": "VUID-VkComputePipelineCreateInfo-flags-03370",
6515          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>"
6516        }
6517      ],
6518      "(VK_NV_device_generated_commands)": [
6519        {
6520          "vuid": "VUID-VkComputePipelineCreateInfo-flags-02874",
6521          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>"
6522        }
6523      ],
6524      "(VK_EXT_pipeline_creation_cache_control)": [
6525        {
6526          "vuid": "VUID-VkComputePipelineCreateInfo-pipelineCreationCacheControl-02875",
6527          "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>"
6528        }
6529      ]
6530    },
6531    "VkPipelineShaderStageCreateInfo": {
6532      "core": [
6533        {
6534          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00704",
6535          "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>"
6536        },
6537        {
6538          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00705",
6539          "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>"
6540        },
6541        {
6542          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00706",
6543          "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>"
6544        },
6545        {
6546          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-00707",
6547          "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>"
6548        },
6549        {
6550          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708",
6551          "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>"
6552        },
6553        {
6554          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709",
6555          "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>"
6556        },
6557        {
6558          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710",
6559          "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>"
6560        },
6561        {
6562          "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711",
6563          "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>"
6564        },
6565        {
6566          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00712",
6567          "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>"
6568        },
6569        {
6570          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00713",
6571          "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>"
6572        },
6573        {
6574          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00714",
6575          "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>"
6576        },
6577        {
6578          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00715",
6579          "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>"
6580        },
6581        {
6582          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02596",
6583          "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"
6584        },
6585        {
6586          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02597",
6587          "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"
6588        },
6589        {
6590          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00718",
6591          "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>"
6592        },
6593        {
6594          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00719",
6595          "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"
6596        },
6597        {
6598          "vuid": "VUID-VkPipelineShaderStageCreateInfo-module-04145",
6599          "text": " The SPIR-V code that was used to create <code>module</code> <strong class=\"purple\">must</strong> be valid as described by the <a href=\"#spirv-spec\">Khronos SPIR-V Specification</a> after applying the specializations provided in <code>pSpecializationInfo</code>, if any, and then converting all specialization constants into fixed constants."
6600        },
6601        {
6602          "vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-sType",
6603          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO</code>"
6604        },
6605        {
6606          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-pNext",
6607          "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>"
6608        },
6609        {
6610          "vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-unique",
6611          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
6612        },
6613        {
6614          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-parameter",
6615          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineShaderStageCreateFlagBits\">VkPipelineShaderStageCreateFlagBits</a> values"
6616        },
6617        {
6618          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-parameter",
6619          "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value"
6620        },
6621        {
6622          "vuid": "VUID-VkPipelineShaderStageCreateInfo-module-parameter",
6623          "text": " <code>module</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderModule\">VkShaderModule</a> handle"
6624        },
6625        {
6626          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-parameter",
6627          "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
6628        },
6629        {
6630          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter",
6631          "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"
6632        }
6633      ],
6634      "(VK_NV_mesh_shader)": [
6635        {
6636          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02091",
6637          "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>"
6638        },
6639        {
6640          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02092",
6641          "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>"
6642        },
6643        {
6644          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02093",
6645          "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>"
6646        },
6647        {
6648          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02094",
6649          "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>"
6650        }
6651      ],
6652      "(VK_EXT_shader_stencil_export)": [
6653        {
6654          "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-01511",
6655          "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"
6656        }
6657      ],
6658      "(VK_EXT_subgroup_size_control)": [
6659        {
6660          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02784",
6661          "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"
6662        },
6663        {
6664          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02785",
6665          "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"
6666        },
6667        {
6668          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02754",
6669          "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"
6670        },
6671        {
6672          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02755",
6673          "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>"
6674        },
6675        {
6676          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02756",
6677          "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>"
6678        },
6679        {
6680          "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02757",
6681          "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>"
6682        },
6683        {
6684          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02758",
6685          "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>"
6686        },
6687        {
6688          "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02759",
6689          "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>"
6690        }
6691      ]
6692    },
6693    "VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT": {
6694      "(VK_EXT_subgroup_size_control)": [
6695        {
6696          "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02760",
6697          "text": " <code>requiredSubgroupSize</code> <strong class=\"purple\">must</strong> be a power-of-two integer"
6698        },
6699        {
6700          "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02761",
6701          "text": " <code>requiredSubgroupSize</code> <strong class=\"purple\">must</strong> be greater or equal to <a href=\"#limits-min-subgroup-size\">minSubgroupSize</a>"
6702        },
6703        {
6704          "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02762",
6705          "text": " <code>requiredSubgroupSize</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-max-subgroup-size\">maxSubgroupSize</a>"
6706        },
6707        {
6708          "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-sType-sType",
6709          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT</code>"
6710        }
6711      ]
6712    },
6713    "vkCreateGraphicsPipelines": {
6714      "core": [
6715        {
6716          "vuid": "VUID-vkCreateGraphicsPipelines-flags-00720",
6717          "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"
6718        },
6719        {
6720          "vuid": "VUID-vkCreateGraphicsPipelines-flags-00721",
6721          "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"
6722        },
6723        {
6724          "vuid": "VUID-vkCreateGraphicsPipelines-device-parameter",
6725          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
6726        },
6727        {
6728          "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parameter",
6729          "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"
6730        },
6731        {
6732          "vuid": "VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter",
6733          "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"
6734        },
6735        {
6736          "vuid": "VUID-vkCreateGraphicsPipelines-pAllocator-parameter",
6737          "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"
6738        },
6739        {
6740          "vuid": "VUID-vkCreateGraphicsPipelines-pPipelines-parameter",
6741          "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"
6742        },
6743        {
6744          "vuid": "VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength",
6745          "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6746        },
6747        {
6748          "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parent",
6749          "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>"
6750        }
6751      ],
6752      "(VK_EXT_pipeline_creation_cache_control)": [
6753        {
6754          "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-02876",
6755          "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>"
6756        }
6757      ]
6758    },
6759    "VkGraphicsPipelineCreateInfo": {
6760      "core": [
6761        {
6762          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00722",
6763          "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>"
6764        },
6765        {
6766          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00723",
6767          "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"
6768        },
6769        {
6770          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00724",
6771          "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>"
6772        },
6773        {
6774          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00725",
6775          "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"
6776        },
6777        {
6778          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00726",
6779          "text": " The <code>stage</code> member of each element of <code>pStages</code> <strong class=\"purple\">must</strong> be unique"
6780        },
6781        {
6782          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00728",
6783          "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>"
6784        },
6785        {
6786          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00729",
6787          "text": " If <code>pStages</code> includes a tessellation control shader stage, it <strong class=\"purple\">must</strong> include a tessellation evaluation shader stage"
6788        },
6789        {
6790          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00730",
6791          "text": " If <code>pStages</code> includes a tessellation evaluation shader stage, it <strong class=\"purple\">must</strong> include a tessellation control shader stage"
6792        },
6793        {
6794          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00731",
6795          "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"
6796        },
6797        {
6798          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00732",
6799          "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"
6800        },
6801        {
6802          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00733",
6803          "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"
6804        },
6805        {
6806          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00734",
6807          "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"
6808        },
6809        {
6810          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00735",
6811          "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"
6812        },
6813        {
6814          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00736",
6815          "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>"
6816        },
6817        {
6818          "vuid": "VUID-VkGraphicsPipelineCreateInfo-topology-00737",
6819          "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"
6820        },
6821        {
6822          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00738",
6823          "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>"
6824        },
6825        {
6826          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00739",
6827          "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"
6828        },
6829        {
6830          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00740",
6831          "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"
6832        },
6833        {
6834          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00741",
6835          "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>"
6836        },
6837        {
6838          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00742",
6839          "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"
6840        },
6841        {
6842          "vuid": "VUID-VkGraphicsPipelineCreateInfo-blendEnable-02023",
6843          "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>"
6844        },
6845        {
6846          "vuid": "VUID-VkGraphicsPipelineCreateInfo-attachmentCount-00746",
6847          "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>"
6848        },
6849        {
6850          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749",
6851          "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>"
6852        },
6853        {
6854          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750",
6855          "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"
6856        },
6857        {
6858          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751",
6859          "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"
6860        },
6861        {
6862          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00752",
6863          "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"
6864        },
6865        {
6866          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00753",
6867          "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"
6868        },
6869        {
6870          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-04493",
6871          "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, <code>pColorBlendState-&gt;attachmentCount</code> <strong class=\"purple\">must</strong> be greater than the index of all color attachments that are not <code>VK_ATTACHMENT_UNUSED</code> for the <code>subpass</code> index in <code>renderPass</code>"
6872        },
6873        {
6874          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754",
6875          "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>"
6876        },
6877        {
6878          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-00756",
6879          "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>"
6880        },
6881        {
6882          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00757",
6883          "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"
6884        },
6885        {
6886          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00758",
6887          "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>"
6888        },
6889        {
6890          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00759",
6891          "text": " <code>subpass</code> <strong class=\"purple\">must</strong> be a valid subpass within <code>renderPass</code>"
6892        },
6893        {
6894          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-01688",
6895          "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>"
6896        },
6897        {
6898          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02097",
6899          "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"
6900        },
6901        {
6902          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02098",
6903          "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"
6904        },
6905        {
6906          "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-sType",
6907          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO</code>"
6908        },
6909        {
6910          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pNext-pNext",
6911          "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>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>, or <a href=\"#VkPipelineRepresentativeFragmentTestStateCreateInfoNV\">VkPipelineRepresentativeFragmentTestStateCreateInfoNV</a>"
6912        },
6913        {
6914          "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-unique",
6915          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
6916        },
6917        {
6918          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-parameter",
6919          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
6920        },
6921        {
6922          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-parameter",
6923          "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"
6924        },
6925        {
6926          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-parameter",
6927          "text": " <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineRasterizationStateCreateInfo\">VkPipelineRasterizationStateCreateInfo</a> structure"
6928        },
6929        {
6930          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter",
6931          "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"
6932        },
6933        {
6934          "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-parameter",
6935          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
6936        },
6937        {
6938          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-parameter",
6939          "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle"
6940        },
6941        {
6942          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stageCount-arraylength",
6943          "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6944        },
6945        {
6946          "vuid": "VUID-VkGraphicsPipelineCreateInfo-commonparent",
6947          "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>"
6948        }
6949      ],
6950      "!(VK_NV_mesh_shader)": [
6951        {
6952          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00727",
6953          "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>"
6954        }
6955      ],
6956      "(VK_NV_mesh_shader)": [
6957        {
6958          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02095",
6959          "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>)"
6960        },
6961        {
6962          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-02096",
6963          "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>"
6964        }
6965      ],
6966      "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [
6967        {
6968          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00743",
6969          "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>"
6970        },
6971        {
6972          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00744",
6973          "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>"
6974        }
6975      ],
6976      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
6977        {
6978          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01756",
6979          "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>"
6980        },
6981        {
6982          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01757",
6983          "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>"
6984        }
6985      ],
6986      "!(VK_EXT_extended_dynamic_state)": [
6987        {
6988          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00747",
6989          "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"
6990        },
6991        {
6992          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00748",
6993          "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"
6994        }
6995      ],
6996      "(VK_EXT_extended_dynamic_state)": [
6997        {
6998          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04130",
6999          "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT</code> or <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</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"
7000        },
7001        {
7002          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04131",
7003          "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SCISSOR</code> or <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</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"
7004        },
7005        {
7006          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03378",
7007          "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>"
7008        },
7009        {
7010          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03379",
7011          "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"
7012        },
7013        {
7014          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03380",
7015          "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"
7016        },
7017        {
7018          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04132",
7019          "text": " If <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> is included in the <code>pDynamicStates</code> array then <code>VK_DYNAMIC_STATE_VIEWPORT</code> <strong class=\"purple\">must</strong> not be present"
7020        },
7021        {
7022          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04133",
7023          "text": " If <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> is included in the <code>pDynamicStates</code> array then <code>VK_DYNAMIC_STATE_SCISSOR</code> <strong class=\"purple\">must</strong> not be present"
7024        }
7025      ],
7026      "!(VK_EXT_depth_range_unrestricted)": [
7027        {
7028          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00755",
7029          "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"
7030        }
7031      ],
7032      "(VK_EXT_depth_range_unrestricted)": [
7033        {
7034          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510",
7035          "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"
7036        }
7037      ],
7038      "(VK_EXT_sample_locations)": [
7039        {
7040          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521",
7041          "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>"
7042        },
7043        {
7044          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522",
7045          "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>"
7046        },
7047        {
7048          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523",
7049          "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>"
7050        },
7051        {
7052          "vuid": "VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524",
7053          "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>"
7054        }
7055      ],
7056      "(VK_AMD_mixed_attachment_samples)": [
7057        {
7058          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01505",
7059          "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"
7060        }
7061      ],
7062      "(VK_NV_framebuffer_mixed_samples)": [
7063        {
7064          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01411",
7065          "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"
7066        },
7067        {
7068          "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01412",
7069          "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"
7070        }
7071      ],
7072      "(VK_NV_coverage_reduction_mode)": [
7073        {
7074          "vuid": "VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722",
7075          "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>"
7076        }
7077      ],
7078      "(VK_VERSION_1_1,VK_KHR_multiview)": [
7079        {
7080          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00760",
7081          "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"
7082        },
7083        {
7084          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00761",
7085          "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"
7086        },
7087        {
7088          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00762",
7089          "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"
7090        },
7091        {
7092          "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00763",
7093          "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"
7094        }
7095      ],
7096      "(VK_VERSION_1_1,VK_KHR_device_group)": [
7097        {
7098          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00764",
7099          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag"
7100        }
7101      ],
7102      "(VK_VERSION_1_1,VK_KHR_maintenance2,VK_KHR_create_renderpass2)": [
7103        {
7104          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-01565",
7105          "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"
7106        }
7107      ],
7108      "(VK_NV_clip_space_w_scaling)": [
7109        {
7110          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715",
7111          "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"
7112        }
7113      ],
7114      "(VK_NV_scissor_exclusive)": [
7115        {
7116          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056",
7117          "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"
7118        }
7119      ],
7120      "(VK_NV_shading_rate_image)": [
7121        {
7122          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057",
7123          "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"
7124        }
7125      ],
7126      "(VK_EXT_discard_rectangles)": [
7127        {
7128          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04058",
7129          "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"
7130        }
7131      ],
7132      "(VK_EXT_transform_feedback)": [
7133        {
7134          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02317",
7135          "text": " The <code>Xfb</code> execution mode <strong class=\"purple\">can</strong> be specified by only one shader stage in <code>pStages</code>"
7136        },
7137        {
7138          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02318",
7139          "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"
7140        },
7141        {
7142          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319",
7143          "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>"
7144        },
7145        {
7146          "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320",
7147          "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"
7148        },
7149        {
7150          "vuid": "VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321",
7151          "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"
7152        }
7153      ],
7154      "(VK_EXT_transform_feedback)+(VK_NV_mesh_shader)": [
7155        {
7156          "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-02322",
7157          "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"
7158        }
7159      ],
7160      "(VK_EXT_line_rasterization)": [
7161        {
7162          "vuid": "VUID-VkGraphicsPipelineCreateInfo-lineRasterizationMode-02766",
7163          "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>"
7164        },
7165        {
7166          "vuid": "VUID-VkGraphicsPipelineCreateInfo-stippledLineEnable-02767",
7167          "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>"
7168        }
7169      ],
7170      "(VK_KHR_pipeline_library)": [
7171        {
7172          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03371",
7173          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>"
7174        }
7175      ],
7176      "(VK_KHR_ray_tracing)": [
7177        {
7178          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03372",
7179          "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>"
7180        },
7181        {
7182          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03373",
7183          "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>"
7184        },
7185        {
7186          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03374",
7187          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>"
7188        },
7189        {
7190          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03375",
7191          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>"
7192        },
7193        {
7194          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03376",
7195          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>"
7196        },
7197        {
7198          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03377",
7199          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>"
7200        }
7201      ],
7202      "(VK_NV_device_generated_commands)": [
7203        {
7204          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-02877",
7205          "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>, then the <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
7206        }
7207      ],
7208      "(VK_NV_device_generated_commands)+(VK_EXT_transform_feedback)": [
7209        {
7210          "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-02966",
7211          "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"
7212        }
7213      ],
7214      "(VK_EXT_pipeline_creation_cache_control)": [
7215        {
7216          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pipelineCreationCacheControl-02878",
7217          "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>"
7218        }
7219      ],
7220      "(VK_KHR_fragment_shading_rate)": [
7221        {
7222          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04494",
7223          "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-&gt;<code>pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.width <strong class=\"purple\">must</strong> be greater than or equal to <code>1</code>"
7224        },
7225        {
7226          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04495",
7227          "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-&gt;<code>pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.height <strong class=\"purple\">must</strong> be greater than or equal to <code>1</code>"
7228        },
7229        {
7230          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04496",
7231          "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-&gt;<code>pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.width <strong class=\"purple\">must</strong> be a power-of-two value"
7232        },
7233        {
7234          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04497",
7235          "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-&gt;<code>pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.height <strong class=\"purple\">must</strong> be a power-of-two value"
7236        },
7237        {
7238          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04498",
7239          "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-&gt;<code>pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.width <strong class=\"purple\">must</strong> be less than or equal to <code>4</code>"
7240        },
7241        {
7242          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04499",
7243          "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-&gt;<code>pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.height <strong class=\"purple\">must</strong> be less than or equal to <code>4</code>"
7244        },
7245        {
7246          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04500",
7247          "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-&gt;<code>pDynamicStates</code>, and the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code> feature</a> is not enabled, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.width and <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.height <strong class=\"purple\">must</strong> both be equal to <code>1</code>"
7248        },
7249        {
7250          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04501",
7251          "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-&gt;<code>pDynamicStates</code>, and the <a href=\"#feature-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code> feature</a> is not enabled, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>combinerOps</code>[0] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>"
7252        },
7253        {
7254          "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04502",
7255          "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-&gt;<code>pDynamicStates</code>, and the <a href=\"#feature-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code> feature</a> is not enabled, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>combinerOps</code>[1] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>"
7256        },
7257        {
7258          "vuid": "VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04503",
7259          "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> is not included in <code>pDynamicState</code>-&gt;<code>pDynamicStates</code>, and <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>::<code>viewportCount</code> is greater than <code>1</code>, entry points specified in <code>pStages</code> <strong class=\"purple\">must</strong> not write to the <code>PrimitiveShadingRateKHR</code> built-in"
7260        },
7261        {
7262          "vuid": "VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04504",
7263          "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and entry points specified in <code>pStages</code> write to the <code>ViewportIndex</code> built-in, they <strong class=\"purple\">must</strong> not also write to the <code>PrimitiveShadingRateKHR</code> built-in"
7264        },
7265        {
7266          "vuid": "VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04506",
7267          "text": " If the <a href=\"#limits-fragmentShadingRateNonTrivialCombinerOps\"><code>fragmentShadingRateNonTrivialCombinerOps</code></a> limit is not supported and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-&gt;<code>pDynamicStates</code>, elements of <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>combinerOps</code> <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code> or <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR</code>"
7268        }
7269      ],
7270      "(VK_KHR_fragment_shading_rate)+(VK_NV_viewport_array2)": [
7271        {
7272          "vuid": "VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04505",
7273          "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and entry points specified in <code>pStages</code> write to the <code>ViewportMaskNV</code> built-in, they <strong class=\"purple\">must</strong> not also write to the <code>PrimitiveShadingRateKHR</code> built-in"
7274        }
7275      ]
7276    },
7277    "VkPipelineDynamicStateCreateInfo": {
7278      "core": [
7279        {
7280          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442",
7281          "text": " Each element of <code>pDynamicStates</code> <strong class=\"purple\">must</strong> be unique"
7282        },
7283        {
7284          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-sType-sType",
7285          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO</code>"
7286        },
7287        {
7288          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext",
7289          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7290        },
7291        {
7292          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask",
7293          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
7294        },
7295        {
7296          "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter",
7297          "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"
7298        }
7299      ]
7300    },
7301    "VkGraphicsPipelineShaderGroupsCreateInfoNV": {
7302      "(VK_NV_device_generated_commands)": [
7303        {
7304          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02879",
7305          "text": " <code>groupCount</code> <strong class=\"purple\">must</strong> be at least <code>1</code> and as maximum <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxGraphicsShaderGroupCount</code>"
7306        },
7307        {
7308          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02880",
7309          "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>"
7310        },
7311        {
7312          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02881",
7313          "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>"
7314        },
7315        {
7316          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02882",
7317          "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"
7318        },
7319        {
7320          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-02886",
7321          "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>"
7322        },
7323        {
7324          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-deviceGeneratedCommands-02887",
7325          "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
7326        },
7327        {
7328          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-sType-sType",
7329          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV</code>"
7330        },
7331        {
7332          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-parameter",
7333          "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"
7334        },
7335        {
7336          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-parameter",
7337          "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"
7338        },
7339        {
7340          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-arraylength",
7341          "text": " <code>groupCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7342        }
7343      ],
7344      "(VK_NV_device_generated_commands)+!(VK_NV_mesh_shader)": [
7345        {
7346          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02883",
7347          "text": " All elements of <code>pGroups</code> <strong class=\"purple\">must</strong> use the same shader stage combinations"
7348        }
7349      ],
7350      "(VK_NV_device_generated_commands)+(VK_NV_mesh_shader)": [
7351        {
7352          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02884",
7353          "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"
7354        },
7355        {
7356          "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02885",
7357          "text": " Mesh and regular primitive shading stages cannot be mixed across <code>pGroups</code>"
7358        }
7359      ]
7360    },
7361    "VkGraphicsShaderGroupCreateInfoNV": {
7362      "(VK_NV_device_generated_commands)": [
7363        {
7364          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-02888",
7365          "text": " For <code>stageCount</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>stageCount</code> apply"
7366        },
7367        {
7368          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-02889",
7369          "text": " For <code>pStages</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> apply"
7370        },
7371        {
7372          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pVertexInputState-02890",
7373          "text": " For <code>pVertexInputState</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pVertexInputState</code> apply"
7374        },
7375        {
7376          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pTessellationState-02891",
7377          "text": " For <code>pTessellationState</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pTessellationState</code> apply"
7378        },
7379        {
7380          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-sType-sType",
7381          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV</code>"
7382        },
7383        {
7384          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pNext-pNext",
7385          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7386        },
7387        {
7388          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-parameter",
7389          "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"
7390        },
7391        {
7392          "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-arraylength",
7393          "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7394        }
7395      ]
7396    },
7397    "vkDestroyPipeline": {
7398      "core": [
7399        {
7400          "vuid": "VUID-vkDestroyPipeline-pipeline-00765",
7401          "text": " All submitted commands that refer to <code>pipeline</code> <strong class=\"purple\">must</strong> have completed execution"
7402        },
7403        {
7404          "vuid": "VUID-vkDestroyPipeline-pipeline-00766",
7405          "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"
7406        },
7407        {
7408          "vuid": "VUID-vkDestroyPipeline-pipeline-00767",
7409          "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>"
7410        },
7411        {
7412          "vuid": "VUID-vkDestroyPipeline-device-parameter",
7413          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7414        },
7415        {
7416          "vuid": "VUID-vkDestroyPipeline-pipeline-parameter",
7417          "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"
7418        },
7419        {
7420          "vuid": "VUID-vkDestroyPipeline-pAllocator-parameter",
7421          "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"
7422        },
7423        {
7424          "vuid": "VUID-vkDestroyPipeline-pipeline-parent",
7425          "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>"
7426        }
7427      ]
7428    },
7429    "vkCreatePipelineCache": {
7430      "core": [
7431        {
7432          "vuid": "VUID-vkCreatePipelineCache-device-parameter",
7433          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7434        },
7435        {
7436          "vuid": "VUID-vkCreatePipelineCache-pCreateInfo-parameter",
7437          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineCacheCreateInfo\">VkPipelineCacheCreateInfo</a> structure"
7438        },
7439        {
7440          "vuid": "VUID-vkCreatePipelineCache-pAllocator-parameter",
7441          "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"
7442        },
7443        {
7444          "vuid": "VUID-vkCreatePipelineCache-pPipelineCache-parameter",
7445          "text": " <code>pPipelineCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
7446        }
7447      ]
7448    },
7449    "VkPipelineCacheCreateInfo": {
7450      "core": [
7451        {
7452          "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00768",
7453          "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"
7454        },
7455        {
7456          "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00769",
7457          "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>"
7458        },
7459        {
7460          "vuid": "VUID-VkPipelineCacheCreateInfo-sType-sType",
7461          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO</code>"
7462        },
7463        {
7464          "vuid": "VUID-VkPipelineCacheCreateInfo-pNext-pNext",
7465          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7466        },
7467        {
7468          "vuid": "VUID-VkPipelineCacheCreateInfo-flags-parameter",
7469          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCacheCreateFlagBits\">VkPipelineCacheCreateFlagBits</a> values"
7470        },
7471        {
7472          "vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-parameter",
7473          "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"
7474        }
7475      ],
7476      "(VK_EXT_pipeline_creation_cache_control)": [
7477        {
7478          "vuid": "VUID-VkPipelineCacheCreateInfo-pipelineCreationCacheControl-02892",
7479          "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>"
7480        }
7481      ]
7482    },
7483    "vkMergePipelineCaches": {
7484      "core": [
7485        {
7486          "vuid": "VUID-vkMergePipelineCaches-dstCache-00770",
7487          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches"
7488        },
7489        {
7490          "vuid": "VUID-vkMergePipelineCaches-device-parameter",
7491          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7492        },
7493        {
7494          "vuid": "VUID-vkMergePipelineCaches-dstCache-parameter",
7495          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
7496        },
7497        {
7498          "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parameter",
7499          "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"
7500        },
7501        {
7502          "vuid": "VUID-vkMergePipelineCaches-srcCacheCount-arraylength",
7503          "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7504        },
7505        {
7506          "vuid": "VUID-vkMergePipelineCaches-dstCache-parent",
7507          "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7508        },
7509        {
7510          "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parent",
7511          "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7512        }
7513      ]
7514    },
7515    "vkGetPipelineCacheData": {
7516      "core": [
7517        {
7518          "vuid": "VUID-vkGetPipelineCacheData-device-parameter",
7519          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7520        },
7521        {
7522          "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parameter",
7523          "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle"
7524        },
7525        {
7526          "vuid": "VUID-vkGetPipelineCacheData-pDataSize-parameter",
7527          "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
7528        },
7529        {
7530          "vuid": "VUID-vkGetPipelineCacheData-pData-parameter",
7531          "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"
7532        },
7533        {
7534          "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parent",
7535          "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7536        }
7537      ]
7538    },
7539    "vkDestroyPipelineCache": {
7540      "core": [
7541        {
7542          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00771",
7543          "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"
7544        },
7545        {
7546          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00772",
7547          "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>"
7548        },
7549        {
7550          "vuid": "VUID-vkDestroyPipelineCache-device-parameter",
7551          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7552        },
7553        {
7554          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parameter",
7555          "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"
7556        },
7557        {
7558          "vuid": "VUID-vkDestroyPipelineCache-pAllocator-parameter",
7559          "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"
7560        },
7561        {
7562          "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parent",
7563          "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>"
7564        }
7565      ]
7566    },
7567    "VkSpecializationInfo": {
7568      "core": [
7569        {
7570          "vuid": "VUID-VkSpecializationInfo-offset-00773",
7571          "text": " The <code>offset</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than <code>dataSize</code>"
7572        },
7573        {
7574          "vuid": "VUID-VkSpecializationInfo-pMapEntries-00774",
7575          "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>"
7576        },
7577        {
7578          "vuid": "VUID-VkSpecializationInfo-pMapEntries-parameter",
7579          "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"
7580        },
7581        {
7582          "vuid": "VUID-VkSpecializationInfo-pData-parameter",
7583          "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"
7584        }
7585      ]
7586    },
7587    "VkSpecializationMapEntry": {
7588      "core": [
7589        {
7590          "vuid": "VUID-VkSpecializationMapEntry-constantID-00776",
7591          "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>"
7592        }
7593      ]
7594    },
7595    "VkPipelineLibraryCreateInfoKHR": {
7596      "(VK_KHR_pipeline_library)": [
7597        {
7598          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-03381",
7599          "text": " Each element of <code>pLibraries</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>"
7600        },
7601        {
7602          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-sType-sType",
7603          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR</code>"
7604        },
7605        {
7606          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pNext-pNext",
7607          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7608        },
7609        {
7610          "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-parameter",
7611          "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"
7612        }
7613      ]
7614    },
7615    "vkCmdBindPipeline": {
7616      "core": [
7617        {
7618          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00777",
7619          "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"
7620        },
7621        {
7622          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00778",
7623          "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"
7624        },
7625        {
7626          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00779",
7627          "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"
7628        },
7629        {
7630          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00780",
7631          "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"
7632        },
7633        {
7634          "vuid": "VUID-vkCmdBindPipeline-pipeline-00781",
7635          "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"
7636        },
7637        {
7638          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-parameter",
7639          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
7640        },
7641        {
7642          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-parameter",
7643          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
7644        },
7645        {
7646          "vuid": "VUID-vkCmdBindPipeline-pipeline-parameter",
7647          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
7648        },
7649        {
7650          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-recording",
7651          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
7652        },
7653        {
7654          "vuid": "VUID-vkCmdBindPipeline-commandBuffer-cmdpool",
7655          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
7656        },
7657        {
7658          "vuid": "VUID-vkCmdBindPipeline-commonparent",
7659          "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>"
7660        }
7661      ],
7662      "(VK_EXT_sample_locations)": [
7663        {
7664          "vuid": "VUID-vkCmdBindPipeline-variableSampleLocations-01525",
7665          "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"
7666        }
7667      ],
7668      "(VK_EXT_transform_feedback)": [
7669        {
7670          "vuid": "VUID-vkCmdBindPipeline-None-02323",
7671          "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
7672        }
7673      ],
7674      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
7675        {
7676          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02391",
7677          "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"
7678        },
7679        {
7680          "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02392",
7681          "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"
7682        }
7683      ],
7684      "(VK_KHR_pipeline_library)": [
7685        {
7686          "vuid": "VUID-vkCmdBindPipeline-pipeline-03382",
7687          "text": " The <code>pipeline</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code> set"
7688        }
7689      ]
7690    },
7691    "vkCmdBindPipelineShaderGroupNV": {
7692      "(VK_NV_device_generated_commands)": [
7693        {
7694          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02893",
7695          "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"
7696        },
7697        {
7698          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-02894",
7699          "text": " The <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
7700        },
7701        {
7702          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02895",
7703          "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"
7704        },
7705        {
7706          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-deviceGeneratedCommands-02896",
7707          "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
7708        },
7709        {
7710          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-parameter",
7711          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
7712        },
7713        {
7714          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-parameter",
7715          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
7716        },
7717        {
7718          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipeline-parameter",
7719          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
7720        },
7721        {
7722          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-recording",
7723          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
7724        },
7725        {
7726          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-cmdpool",
7727          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
7728        },
7729        {
7730          "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commonparent",
7731          "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>"
7732        }
7733      ]
7734    },
7735    "vkGetPipelineExecutablePropertiesKHR": {
7736      "(VK_KHR_pipeline_executable_properties)": [
7737        {
7738          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipelineExecutableInfo-03270",
7739          "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled"
7740        },
7741        {
7742          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipeline-03271",
7743          "text": " <code>pipeline</code> member of <code>pPipelineInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>"
7744        },
7745        {
7746          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-device-parameter",
7747          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7748        },
7749        {
7750          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pPipelineInfo-parameter",
7751          "text": " <code>pPipelineInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineInfoKHR\">VkPipelineInfoKHR</a> structure"
7752        },
7753        {
7754          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pExecutableCount-parameter",
7755          "text": " <code>pExecutableCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
7756        },
7757        {
7758          "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pProperties-parameter",
7759          "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"
7760        }
7761      ]
7762    },
7763    "VkPipelineInfoKHR": {
7764      "(VK_KHR_pipeline_executable_properties)": [
7765        {
7766          "vuid": "VUID-VkPipelineInfoKHR-sType-sType",
7767          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR</code>"
7768        },
7769        {
7770          "vuid": "VUID-VkPipelineInfoKHR-pNext-pNext",
7771          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7772        },
7773        {
7774          "vuid": "VUID-VkPipelineInfoKHR-pipeline-parameter",
7775          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
7776        }
7777      ]
7778    },
7779    "VkPipelineExecutablePropertiesKHR": {
7780      "(VK_KHR_pipeline_executable_properties)": [
7781        {
7782          "vuid": "VUID-VkPipelineExecutablePropertiesKHR-sType-sType",
7783          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR</code>"
7784        },
7785        {
7786          "vuid": "VUID-VkPipelineExecutablePropertiesKHR-pNext-pNext",
7787          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7788        }
7789      ]
7790    },
7791    "vkGetPipelineExecutableStatisticsKHR": {
7792      "(VK_KHR_pipeline_executable_properties)": [
7793        {
7794          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipelineExecutableInfo-03272",
7795          "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled"
7796        },
7797        {
7798          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03273",
7799          "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>"
7800        },
7801        {
7802          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03274",
7803          "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>"
7804        },
7805        {
7806          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-device-parameter",
7807          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7808        },
7809        {
7810          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pExecutableInfo-parameter",
7811          "text": " <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineExecutableInfoKHR\">VkPipelineExecutableInfoKHR</a> structure"
7812        },
7813        {
7814          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatisticCount-parameter",
7815          "text": " <code>pStatisticCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
7816        },
7817        {
7818          "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatistics-parameter",
7819          "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"
7820        }
7821      ]
7822    },
7823    "VkPipelineExecutableInfoKHR": {
7824      "(VK_KHR_pipeline_executable_properties)": [
7825        {
7826          "vuid": "VUID-VkPipelineExecutableInfoKHR-executableIndex-03275",
7827          "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>"
7828        },
7829        {
7830          "vuid": "VUID-VkPipelineExecutableInfoKHR-sType-sType",
7831          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR</code>"
7832        },
7833        {
7834          "vuid": "VUID-VkPipelineExecutableInfoKHR-pNext-pNext",
7835          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7836        },
7837        {
7838          "vuid": "VUID-VkPipelineExecutableInfoKHR-pipeline-parameter",
7839          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
7840        }
7841      ]
7842    },
7843    "VkPipelineExecutableStatisticKHR": {
7844      "(VK_KHR_pipeline_executable_properties)": [
7845        {
7846          "vuid": "VUID-VkPipelineExecutableStatisticKHR-sType-sType",
7847          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR</code>"
7848        },
7849        {
7850          "vuid": "VUID-VkPipelineExecutableStatisticKHR-pNext-pNext",
7851          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7852        }
7853      ]
7854    },
7855    "vkGetPipelineExecutableInternalRepresentationsKHR": {
7856      "(VK_KHR_pipeline_executable_properties)": [
7857        {
7858          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipelineExecutableInfo-03276",
7859          "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled"
7860        },
7861        {
7862          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03277",
7863          "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>"
7864        },
7865        {
7866          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03278",
7867          "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>"
7868        },
7869        {
7870          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-device-parameter",
7871          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7872        },
7873        {
7874          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pExecutableInfo-parameter",
7875          "text": " <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineExecutableInfoKHR\">VkPipelineExecutableInfoKHR</a> structure"
7876        },
7877        {
7878          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentationCount-parameter",
7879          "text": " <code>pInternalRepresentationCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
7880        },
7881        {
7882          "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentations-parameter",
7883          "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"
7884        }
7885      ]
7886    },
7887    "VkPipelineExecutableInternalRepresentationKHR": {
7888      "(VK_KHR_pipeline_executable_properties)": [
7889        {
7890          "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-sType-sType",
7891          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR</code>"
7892        },
7893        {
7894          "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-pNext-pNext",
7895          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7896        }
7897      ]
7898    },
7899    "vkGetShaderInfoAMD": {
7900      "(VK_AMD_shader_info)": [
7901        {
7902          "vuid": "VUID-vkGetShaderInfoAMD-device-parameter",
7903          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7904        },
7905        {
7906          "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parameter",
7907          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
7908        },
7909        {
7910          "vuid": "VUID-vkGetShaderInfoAMD-shaderStage-parameter",
7911          "text": " <code>shaderStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value"
7912        },
7913        {
7914          "vuid": "VUID-vkGetShaderInfoAMD-infoType-parameter",
7915          "text": " <code>infoType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderInfoTypeAMD\">VkShaderInfoTypeAMD</a> value"
7916        },
7917        {
7918          "vuid": "VUID-vkGetShaderInfoAMD-pInfoSize-parameter",
7919          "text": " <code>pInfoSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
7920        },
7921        {
7922          "vuid": "VUID-vkGetShaderInfoAMD-pInfo-parameter",
7923          "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"
7924        },
7925        {
7926          "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parent",
7927          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7928        }
7929      ]
7930    },
7931    "VkPipelineCompilerControlCreateInfoAMD": {
7932      "(VK_AMD_pipeline_compiler_control)": [
7933        {
7934          "vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-sType-sType",
7935          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD</code>"
7936        },
7937        {
7938          "vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-compilerControlFlags-zerobitmask",
7939          "text": " <code>compilerControlFlags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
7940        }
7941      ]
7942    },
7943    "vkCreateRayTracingPipelinesNV": {
7944      "core": [
7945        {
7946          "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03415",
7947          "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"
7948        },
7949        {
7950          "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03416",
7951          "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"
7952        }
7953      ],
7954      "(VK_EXT_pipeline_creation_cache_control)": [
7955        {
7956          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903",
7957          "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>"
7958        }
7959      ],
7960      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
7961        {
7962          "vuid": "VUID-vkCreateRayTracingPipelinesNV-device-parameter",
7963          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
7964        },
7965        {
7966          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter",
7967          "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"
7968        },
7969        {
7970          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter",
7971          "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"
7972        },
7973        {
7974          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter",
7975          "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"
7976        },
7977        {
7978          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter",
7979          "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"
7980        },
7981        {
7982          "vuid": "VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength",
7983          "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7984        },
7985        {
7986          "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent",
7987          "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>"
7988        }
7989      ]
7990    },
7991    "vkCreateRayTracingPipelinesKHR": {
7992      "core": [
7993        {
7994          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03415",
7995          "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"
7996        },
7997        {
7998          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03416",
7999          "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"
8000        },
8001        {
8002          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-rayTracing-03455",
8003          "text": " The <a href=\"#features-raytracing\"><code>rayTracing</code></a> feature <strong class=\"purple\">must</strong> be enabled"
8004        }
8005      ],
8006      "(VK_EXT_pipeline_creation_cache_control)": [
8007        {
8008          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903",
8009          "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>"
8010        }
8011      ],
8012      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
8013        {
8014          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-device-parameter",
8015          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
8016        },
8017        {
8018          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parameter",
8019          "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"
8020        },
8021        {
8022          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pCreateInfos-parameter",
8023          "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"
8024        },
8025        {
8026          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pAllocator-parameter",
8027          "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"
8028        },
8029        {
8030          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pPipelines-parameter",
8031          "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"
8032        },
8033        {
8034          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-createInfoCount-arraylength",
8035          "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8036        },
8037        {
8038          "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parent",
8039          "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>"
8040        }
8041      ]
8042    },
8043    "VkRayTracingPipelineCreateInfoNV": {
8044      "core": [
8045        {
8046          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03421",
8047          "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>"
8048        },
8049        {
8050          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03422",
8051          "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"
8052        },
8053        {
8054          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03423",
8055          "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>"
8056        },
8057        {
8058          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03424",
8059          "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>"
8060        },
8061        {
8062          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stage-03425",
8063          "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>"
8064        },
8065        {
8066          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-03426",
8067          "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"
8068        },
8069        {
8070          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-03427",
8071          "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>"
8072        },
8073        {
8074          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-03428",
8075          "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>"
8076        },
8077        {
8078          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-03457",
8079          "text": " <code>maxRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxRecursionDepth</code>"
8080        }
8081      ],
8082      "(VK_NV_device_generated_commands)": [
8083        {
8084          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02904",
8085          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>"
8086        }
8087      ],
8088      "(VK_EXT_pipeline_creation_cache_control)": [
8089        {
8090          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pipelineCreationCacheControl-02905",
8091          "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>"
8092        },
8093        {
8094          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02957",
8095          "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"
8096        }
8097      ],
8098      "(VK_KHR_pipeline_library)": [
8099        {
8100          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03456",
8101          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>"
8102        }
8103      ],
8104      "(VK_KHR_ray_tracing)": [
8105        {
8106          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03458",
8107          "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>"
8108        },
8109        {
8110          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03459",
8111          "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>"
8112        },
8113        {
8114          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03460",
8115          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>"
8116        },
8117        {
8118          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03461",
8119          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>"
8120        },
8121        {
8122          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03462",
8123          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>"
8124        },
8125        {
8126          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03463",
8127          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>"
8128        }
8129      ],
8130      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
8131        {
8132          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-sType",
8133          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV</code>"
8134        },
8135        {
8136          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext",
8137          "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>"
8138        },
8139        {
8140          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-unique",
8141          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
8142        },
8143        {
8144          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter",
8145          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
8146        },
8147        {
8148          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter",
8149          "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"
8150        },
8151        {
8152          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter",
8153          "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"
8154        },
8155        {
8156          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter",
8157          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
8158        },
8159        {
8160          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength",
8161          "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8162        },
8163        {
8164          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength",
8165          "text": " <code>groupCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8166        },
8167        {
8168          "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-commonparent",
8169          "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>"
8170        }
8171      ]
8172    },
8173    "VkRayTracingPipelineCreateInfoKHR": {
8174      "core": [
8175        {
8176          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03421",
8177          "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>"
8178        },
8179        {
8180          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03422",
8181          "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"
8182        },
8183        {
8184          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03423",
8185          "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>"
8186        },
8187        {
8188          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03424",
8189          "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>"
8190        },
8191        {
8192          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-stage-03425",
8193          "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>"
8194        },
8195        {
8196          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pStages-03426",
8197          "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"
8198        },
8199        {
8200          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-03427",
8201          "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>"
8202        },
8203        {
8204          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-03428",
8205          "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>"
8206        },
8207        {
8208          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-maxRecursionDepth-03464",
8209          "text": " <code>maxRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>::<code>maxRecursionDepth</code>"
8210        },
8211        {
8212          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03470",
8213          "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>"
8214        },
8215        {
8216          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03471",
8217          "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>"
8218        },
8219        {
8220          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPrimitiveCulling-03472",
8221          "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>"
8222        },
8223        {
8224          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPrimitiveCulling-03473",
8225          "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>"
8226        },
8227        {
8228          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-libraries-02958",
8229          "text": " If <code>libraries.libraryCount</code> is zero, then <code>stageCount</code> <strong class=\"purple\">must</strong> not be zero"
8230        },
8231        {
8232          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-libraries-02959",
8233          "text": " If <code>libraries.libraryCount</code> is zero, then <code>groupCount</code> <strong class=\"purple\">must</strong> not be zero"
8234        }
8235      ],
8236      "(VK_NV_device_generated_commands)": [
8237        {
8238          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-02904",
8239          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>"
8240        }
8241      ],
8242      "(VK_EXT_pipeline_creation_cache_control)": [
8243        {
8244          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pipelineCreationCacheControl-02905",
8245          "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>"
8246        }
8247      ],
8248      "(VK_KHR_pipeline_library)": [
8249        {
8250          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03465",
8251          "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>"
8252        },
8253        {
8254          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-libraryCount-03466",
8255          "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>"
8256        },
8257        {
8258          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03467",
8259          "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"
8260        },
8261        {
8262          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03468",
8263          "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"
8264        },
8265        {
8266          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03469",
8267          "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"
8268        }
8269      ],
8270      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
8271        {
8272          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-sType-sType",
8273          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR</code>"
8274        },
8275        {
8276          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pNext-pNext",
8277          "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>"
8278        },
8279        {
8280          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-sType-unique",
8281          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
8282        },
8283        {
8284          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-parameter",
8285          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
8286        },
8287        {
8288          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pStages-parameter",
8289          "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"
8290        },
8291        {
8292          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pGroups-parameter",
8293          "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"
8294        },
8295        {
8296          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-libraries-parameter",
8297          "text": " <code>libraries</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a> structure"
8298        },
8299        {
8300          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInterface-parameter",
8301          "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"
8302        },
8303        {
8304          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-parameter",
8305          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
8306        },
8307        {
8308          "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-commonparent",
8309          "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>"
8310        }
8311      ]
8312    },
8313    "VkRayTracingShaderGroupCreateInfoNV": {
8314      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
8315        {
8316          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413",
8317          "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>"
8318        },
8319        {
8320          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414",
8321          "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>"
8322        },
8323        {
8324          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415",
8325          "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>"
8326        },
8327        {
8328          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416",
8329          "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>"
8330        },
8331        {
8332          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417",
8333          "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>"
8334        },
8335        {
8336          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418",
8337          "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>"
8338        },
8339        {
8340          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType",
8341          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV</code>"
8342        },
8343        {
8344          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext",
8345          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8346        },
8347        {
8348          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter",
8349          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRayTracingShaderGroupTypeKHR\">VkRayTracingShaderGroupTypeKHR</a> value"
8350        }
8351      ]
8352    },
8353    "VkRayTracingShaderGroupCreateInfoKHR": {
8354      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
8355        {
8356          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03474",
8357          "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>"
8358        },
8359        {
8360          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03475",
8361          "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>"
8362        },
8363        {
8364          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03476",
8365          "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>"
8366        },
8367        {
8368          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03477",
8369          "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>"
8370        },
8371        {
8372          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-closestHitShader-03478",
8373          "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>"
8374        },
8375        {
8376          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-anyHitShader-03479",
8377          "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>"
8378        },
8379        {
8380          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingShaderGroupHandleCaptureReplayMixed-03480",
8381          "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"
8382        },
8383        {
8384          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingShaderGroupHandleCaptureReplayMixed-03481",
8385          "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"
8386        },
8387        {
8388          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-sType-sType",
8389          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR</code>"
8390        },
8391        {
8392          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-pNext-pNext",
8393          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8394        },
8395        {
8396          "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-parameter",
8397          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRayTracingShaderGroupTypeKHR\">VkRayTracingShaderGroupTypeKHR</a> value"
8398        }
8399      ]
8400    },
8401    "VkRayTracingPipelineInterfaceCreateInfoKHR": {
8402      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
8403        {
8404          "vuid": "VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-sType-sType",
8405          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR</code>"
8406        },
8407        {
8408          "vuid": "VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-pNext-pNext",
8409          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8410        }
8411      ]
8412    },
8413    "vkGetRayTracingShaderGroupHandlesKHR": {
8414      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
8415        {
8416          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-04050",
8417          "text": " <code>firstGroup</code> <strong class=\"purple\">must</strong> be less than the number of shader groups in <code>pipeline</code>"
8418        },
8419        {
8420          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-02419",
8421          "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>"
8422        },
8423        {
8424          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-02420",
8425          "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>"
8426        },
8427        {
8428          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-device-parameter",
8429          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
8430        },
8431        {
8432          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parameter",
8433          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
8434        },
8435        {
8436          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pData-parameter",
8437          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
8438        },
8439        {
8440          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-arraylength",
8441          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8442        },
8443        {
8444          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parent",
8445          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8446        }
8447      ],
8448      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_pipeline_library)": [
8449        {
8450          "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-03482",
8451          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have not been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>"
8452        }
8453      ]
8454    },
8455    "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR": {
8456      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
8457        {
8458          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-04051",
8459          "text": " <code>firstGroup</code> <strong class=\"purple\">must</strong> be less than the number of shader groups in <code>pipeline</code>"
8460        },
8461        {
8462          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-03483",
8463          "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>"
8464        },
8465        {
8466          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-03484",
8467          "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>"
8468        },
8469        {
8470          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-rayTracingShaderGroupHandleCaptureReplay-03485",
8471          "text": " <code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingShaderGroupHandleCaptureReplay</code> <strong class=\"purple\">must</strong> be enabled to call this function"
8472        },
8473        {
8474          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-device-parameter",
8475          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
8476        },
8477        {
8478          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parameter",
8479          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
8480        },
8481        {
8482          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pData-parameter",
8483          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
8484        },
8485        {
8486          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-arraylength",
8487          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8488        },
8489        {
8490          "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parent",
8491          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8492        }
8493      ]
8494    },
8495    "vkCompileDeferredNV": {
8496      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
8497        {
8498          "vuid": "VUID-vkCompileDeferredNV-pipeline-02237",
8499          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV</code>"
8500        },
8501        {
8502          "vuid": "VUID-vkCompileDeferredNV-shader-02238",
8503          "text": " <code>shader</code> <strong class=\"purple\">must</strong> not have been called as a deferred compile before"
8504        },
8505        {
8506          "vuid": "VUID-vkCompileDeferredNV-device-parameter",
8507          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
8508        },
8509        {
8510          "vuid": "VUID-vkCompileDeferredNV-pipeline-parameter",
8511          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
8512        },
8513        {
8514          "vuid": "VUID-vkCompileDeferredNV-pipeline-parent",
8515          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8516        }
8517      ]
8518    },
8519    "VkPipelineCreationFeedbackCreateInfoEXT": {
8520      "(VK_EXT_pipeline_creation_feedback)": [
8521        {
8522          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02668",
8523          "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>"
8524        },
8525        {
8526          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02669",
8527          "text": " When chained to <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal 1"
8528        },
8529        {
8530          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-sType-sType",
8531          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT</code>"
8532        },
8533        {
8534          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineCreationFeedback-parameter",
8535          "text": " <code>pPipelineCreationFeedback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a> structure"
8536        },
8537        {
8538          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineStageCreationFeedbacks-parameter",
8539          "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"
8540        },
8541        {
8542          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-arraylength",
8543          "text": " <code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8544        }
8545      ],
8546      "(VK_EXT_pipeline_creation_feedback)+(VK_KHR_ray_tracing)": [
8547        {
8548          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02670",
8549          "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>"
8550        }
8551      ],
8552      "(VK_EXT_pipeline_creation_feedback)+(VK_NV_ray_tracing)": [
8553        {
8554          "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02969",
8555          "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>"
8556        }
8557      ]
8558    },
8559    "VkAllocationCallbacks": {
8560      "core": [
8561        {
8562          "vuid": "VUID-VkAllocationCallbacks-pfnAllocation-00632",
8563          "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>"
8564        },
8565        {
8566          "vuid": "VUID-VkAllocationCallbacks-pfnReallocation-00633",
8567          "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>"
8568        },
8569        {
8570          "vuid": "VUID-VkAllocationCallbacks-pfnFree-00634",
8571          "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>"
8572        },
8573        {
8574          "vuid": "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635",
8575          "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"
8576        }
8577      ]
8578    },
8579    "vkGetPhysicalDeviceMemoryProperties": {
8580      "core": [
8581        {
8582          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter",
8583          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
8584        },
8585        {
8586          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-pMemoryProperties-parameter",
8587          "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a> structure"
8588        }
8589      ]
8590    },
8591    "vkGetPhysicalDeviceMemoryProperties2": {
8592      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
8593        {
8594          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter",
8595          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
8596        },
8597        {
8598          "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-pMemoryProperties-parameter",
8599          "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceMemoryProperties2\">VkPhysicalDeviceMemoryProperties2</a> structure"
8600        }
8601      ]
8602    },
8603    "VkPhysicalDeviceMemoryProperties2": {
8604      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
8605        {
8606          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-sType",
8607          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2</code>"
8608        },
8609        {
8610          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-pNext-pNext",
8611          "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>"
8612        },
8613        {
8614          "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-unique",
8615          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
8616        }
8617      ]
8618    },
8619    "VkPhysicalDeviceMemoryBudgetPropertiesEXT": {
8620      "(VK_EXT_memory_budget)": [
8621        {
8622          "vuid": "VUID-VkPhysicalDeviceMemoryBudgetPropertiesEXT-sType-sType",
8623          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT</code>"
8624        }
8625      ]
8626    },
8627    "vkAllocateMemory": {
8628      "core": [
8629        {
8630          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01713",
8631          "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"
8632        },
8633        {
8634          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01714",
8635          "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"
8636        },
8637        {
8638          "vuid": "VUID-vkAllocateMemory-maxMemoryAllocationCount-04101",
8639          "text": " There <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxMemoryAllocationCount</code> device memory allocations currently allocated on the device."
8640        },
8641        {
8642          "vuid": "VUID-vkAllocateMemory-device-parameter",
8643          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
8644        },
8645        {
8646          "vuid": "VUID-vkAllocateMemory-pAllocateInfo-parameter",
8647          "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> structure"
8648        },
8649        {
8650          "vuid": "VUID-vkAllocateMemory-pAllocator-parameter",
8651          "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"
8652        },
8653        {
8654          "vuid": "VUID-vkAllocateMemory-pMemory-parameter",
8655          "text": " <code>pMemory</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
8656        }
8657      ],
8658      "(VK_AMD_device_coherent_memory)": [
8659        {
8660          "vuid": "VUID-vkAllocateMemory-deviceCoherentMemory-02790",
8661          "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>"
8662        }
8663      ]
8664    },
8665    "VkMemoryAllocateInfo": {
8666      "!(VK_ANDROID_external_memory_android_hardware_buffer)": [
8667        {
8668          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00638",
8669          "text": " <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8670        }
8671      ],
8672      "(VK_KHR_external_memory)+(VK_KHR_dedicated_allocation,VK_NV_dedicated_allocation)": [
8673        {
8674          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00639",
8675          "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>]"
8676        }
8677      ],
8678      "(VK_KHR_external_memory)+(VK_NV_external_memory)": [
8679        {
8680          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00640",
8681          "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"
8682        }
8683      ],
8684      "(VK_KHR_external_memory_win32+VK_NV_external_memory_win32)": [
8685        {
8686          "vuid": "VUID-VkMemoryAllocateInfo-pNext-00641",
8687          "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"
8688        }
8689      ],
8690      "(VK_KHR_external_memory_fd)": [
8691        {
8692          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01742",
8693          "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 payload being imported was created."
8694        },
8695        {
8696          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00648",
8697          "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>"
8698        }
8699      ],
8700      "(VK_KHR_external_memory+VK_KHR_device_group)": [
8701        {
8702          "vuid": "VUID-VkMemoryAllocateInfo-None-00643",
8703          "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 payload being imported was allocated."
8704        },
8705        {
8706          "vuid": "VUID-VkMemoryAllocateInfo-None-00644",
8707          "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 payload was originally allocated."
8708        }
8709      ],
8710      "(VK_KHR_external_memory_win32)": [
8711        {
8712          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00645",
8713          "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>"
8714        },
8715        {
8716          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01743",
8717          "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 payload being imported was created."
8718        },
8719        {
8720          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00647",
8721          "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 payload was extracted."
8722        }
8723      ],
8724      "(VK_VERSION_1_1)": [
8725        {
8726          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872",
8727          "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>"
8728        }
8729      ],
8730      "(VK_EXT_external_memory_host)": [
8731        {
8732          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01744",
8733          "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>"
8734        },
8735        {
8736          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01745",
8737          "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>"
8738        }
8739      ],
8740      "(VK_EXT_external_memory_host)+(VK_NV_dedicated_allocation)": [
8741        {
8742          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02805",
8743          "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>"
8744        }
8745      ],
8746      "(VK_EXT_external_memory_host)+(VK_KHR_dedicated_allocation)": [
8747        {
8748          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02806",
8749          "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>"
8750        }
8751      ],
8752      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
8753        {
8754          "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-02383",
8755          "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"
8756        },
8757        {
8758          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02384",
8759          "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>"
8760        },
8761        {
8762          "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-02385",
8763          "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"
8764        },
8765        {
8766          "vuid": "VUID-VkMemoryAllocateInfo-pNext-01874",
8767          "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>"
8768        },
8769        {
8770          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02386",
8771          "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>"
8772        },
8773        {
8774          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02387",
8775          "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"
8776        },
8777        {
8778          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02388",
8779          "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"
8780        },
8781        {
8782          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02389",
8783          "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"
8784        },
8785        {
8786          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02586",
8787          "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"
8788        },
8789        {
8790          "vuid": "VUID-VkMemoryAllocateInfo-pNext-02390",
8791          "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>"
8792        }
8793      ],
8794      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
8795        {
8796          "vuid": "VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03329",
8797          "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>"
8798        },
8799        {
8800          "vuid": "VUID-VkMemoryAllocateInfo-flags-03330",
8801          "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"
8802        },
8803        {
8804          "vuid": "VUID-VkMemoryAllocateInfo-flags-03331",
8805          "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"
8806        },
8807        {
8808          "vuid": "VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03333",
8809          "text": " If the parameters define an import operation, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> <strong class=\"purple\">must</strong> be zero"
8810        }
8811      ],
8812      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)+(VK_EXT_external_memory_host)": [
8813        {
8814          "vuid": "VUID-VkMemoryAllocateInfo-pNext-03332",
8815          "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"
8816        }
8817      ],
8818      "core": [
8819        {
8820          "vuid": "VUID-VkMemoryAllocateInfo-sType-sType",
8821          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO</code>"
8822        },
8823        {
8824          "vuid": "VUID-VkMemoryAllocateInfo-pNext-pNext",
8825          "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>"
8826        },
8827        {
8828          "vuid": "VUID-VkMemoryAllocateInfo-sType-unique",
8829          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
8830        }
8831      ]
8832    },
8833    "VkMemoryDedicatedAllocateInfo": {
8834      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
8835        {
8836          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01432",
8837          "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>"
8838        },
8839        {
8840          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01434",
8841          "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>"
8842        },
8843        {
8844          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01436",
8845          "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>"
8846        },
8847        {
8848          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-sType-sType",
8849          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO</code>"
8850        },
8851        {
8852          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-parameter",
8853          "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"
8854        },
8855        {
8856          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-parameter",
8857          "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"
8858        },
8859        {
8860          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-commonparent",
8861          "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>"
8862        }
8863      ],
8864      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
8865        {
8866          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01433",
8867          "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"
8868        },
8869        {
8870          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01435",
8871          "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"
8872        }
8873      ],
8874      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
8875        {
8876          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-02964",
8877          "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"
8878        },
8879        {
8880          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-02965",
8881          "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"
8882        }
8883      ],
8884      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_win32)": [
8885        {
8886          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01876",
8887          "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"
8888        },
8889        {
8890          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01877",
8891          "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"
8892        }
8893      ],
8894      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_fd)": [
8895        {
8896          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01878",
8897          "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"
8898        },
8899        {
8900          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01879",
8901          "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"
8902        }
8903      ],
8904      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_sampler_ycbcr_conversion)": [
8905        {
8906          "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01797",
8907          "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>"
8908        }
8909      ]
8910    },
8911    "VkDedicatedAllocationMemoryAllocateInfoNV": {
8912      "(VK_NV_dedicated_allocation)": [
8913        {
8914          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00649",
8915          "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>"
8916        },
8917        {
8918          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00650",
8919          "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>"
8920        },
8921        {
8922          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00651",
8923          "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>"
8924        },
8925        {
8926          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00652",
8927          "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"
8928        },
8929        {
8930          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00653",
8931          "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"
8932        },
8933        {
8934          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-sType-sType",
8935          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV</code>"
8936        },
8937        {
8938          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-parameter",
8939          "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"
8940        },
8941        {
8942          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-parameter",
8943          "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"
8944        },
8945        {
8946          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-commonparent",
8947          "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>"
8948        }
8949      ],
8950      "(VK_NV_dedicated_allocation)+(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd)": [
8951        {
8952          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00654",
8953          "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"
8954        },
8955        {
8956          "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00655",
8957          "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"
8958        }
8959      ]
8960    },
8961    "VkMemoryPriorityAllocateInfoEXT": {
8962      "(VK_EXT_memory_priority)": [
8963        {
8964          "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-priority-02602",
8965          "text": " <code>priority</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive"
8966        },
8967        {
8968          "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-sType-sType",
8969          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT</code>"
8970        }
8971      ]
8972    },
8973    "VkExportMemoryAllocateInfo": {
8974      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
8975        {
8976          "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-00656",
8977          "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>"
8978        },
8979        {
8980          "vuid": "VUID-VkExportMemoryAllocateInfo-sType-sType",
8981          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO</code>"
8982        },
8983        {
8984          "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-parameter",
8985          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
8986        }
8987      ]
8988    },
8989    "VkExportMemoryWin32HandleInfoKHR": {
8990      "(VK_KHR_external_memory_win32)": [
8991        {
8992          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-handleTypes-00657",
8993          "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>"
8994        },
8995        {
8996          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-sType-sType",
8997          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
8998        },
8999        {
9000          "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-pAttributes-parameter",
9001          "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"
9002        }
9003      ]
9004    },
9005    "VkImportMemoryWin32HandleInfoKHR": {
9006      "(VK_KHR_external_memory_win32)": [
9007        {
9008          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658",
9009          "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>"
9010        },
9011        {
9012          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659",
9013          "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>"
9014        },
9015        {
9016          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00660",
9017          "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"
9018        },
9019        {
9020          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01439",
9021          "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>"
9022        },
9023        {
9024          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01440",
9025          "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>"
9026        },
9027        {
9028          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00661",
9029          "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>"
9030        },
9031        {
9032          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441",
9033          "text": " if <code>handle</code> is not <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9034        },
9035        {
9036          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518",
9037          "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>"
9038        },
9039        {
9040          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-name-01519",
9041          "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>"
9042        },
9043        {
9044          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-sType-sType",
9045          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
9046        },
9047        {
9048          "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter",
9049          "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"
9050        }
9051      ]
9052    },
9053    "vkGetMemoryWin32HandleKHR": {
9054      "(VK_KHR_external_memory_win32)": [
9055        {
9056          "vuid": "VUID-vkGetMemoryWin32HandleKHR-device-parameter",
9057          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9058        },
9059        {
9060          "vuid": "VUID-vkGetMemoryWin32HandleKHR-pGetWin32HandleInfo-parameter",
9061          "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetWin32HandleInfoKHR\">VkMemoryGetWin32HandleInfoKHR</a> structure"
9062        },
9063        {
9064          "vuid": "VUID-vkGetMemoryWin32HandleKHR-pHandle-parameter",
9065          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
9066        }
9067      ]
9068    },
9069    "VkMemoryGetWin32HandleInfoKHR": {
9070      "(VK_KHR_external_memory_win32)": [
9071        {
9072          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00662",
9073          "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"
9074        },
9075        {
9076          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00663",
9077          "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>"
9078        },
9079        {
9080          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00664",
9081          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle"
9082        },
9083        {
9084          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType",
9085          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR</code>"
9086        },
9087        {
9088          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext",
9089          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9090        },
9091        {
9092          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter",
9093          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9094        },
9095        {
9096          "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter",
9097          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
9098        }
9099      ]
9100    },
9101    "vkGetMemoryWin32HandlePropertiesKHR": {
9102      "(VK_KHR_external_memory_win32)": [
9103        {
9104          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handle-00665",
9105          "text": " <code>handle</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API"
9106        },
9107        {
9108          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-00666",
9109          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be one of the handle types defined as opaque"
9110        },
9111        {
9112          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter",
9113          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9114        },
9115        {
9116          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter",
9117          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
9118        },
9119        {
9120          "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-pMemoryWin32HandleProperties-parameter",
9121          "text": " <code>pMemoryWin32HandleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryWin32HandlePropertiesKHR\">VkMemoryWin32HandlePropertiesKHR</a> structure"
9122        }
9123      ]
9124    },
9125    "VkMemoryWin32HandlePropertiesKHR": {
9126      "(VK_KHR_external_memory_win32)": [
9127        {
9128          "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-sType-sType",
9129          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR</code>"
9130        },
9131        {
9132          "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-pNext-pNext",
9133          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9134        }
9135      ]
9136    },
9137    "VkImportMemoryFdInfoKHR": {
9138      "(VK_KHR_external_memory_fd)": [
9139        {
9140          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00667",
9141          "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>"
9142        },
9143        {
9144          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-00668",
9145          "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>"
9146        },
9147        {
9148          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00669",
9149          "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle"
9150        },
9151        {
9152          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00670",
9153          "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>"
9154        },
9155        {
9156          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01746",
9157          "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>"
9158        },
9159        {
9160          "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01520",
9161          "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>"
9162        },
9163        {
9164          "vuid": "VUID-VkImportMemoryFdInfoKHR-sType-sType",
9165          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR</code>"
9166        },
9167        {
9168          "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-parameter",
9169          "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"
9170        }
9171      ]
9172    },
9173    "vkGetMemoryFdKHR": {
9174      "(VK_KHR_external_memory_fd)": [
9175        {
9176          "vuid": "VUID-vkGetMemoryFdKHR-device-parameter",
9177          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9178        },
9179        {
9180          "vuid": "VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter",
9181          "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetFdInfoKHR\">VkMemoryGetFdInfoKHR</a> structure"
9182        },
9183        {
9184          "vuid": "VUID-vkGetMemoryFdKHR-pFd-parameter",
9185          "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value"
9186        }
9187      ]
9188    },
9189    "VkMemoryGetFdInfoKHR": {
9190      "(VK_KHR_external_memory_fd)": [
9191        {
9192          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00671",
9193          "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"
9194        },
9195        {
9196          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00672",
9197          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle"
9198        },
9199        {
9200          "vuid": "VUID-VkMemoryGetFdInfoKHR-sType-sType",
9201          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR</code>"
9202        },
9203        {
9204          "vuid": "VUID-VkMemoryGetFdInfoKHR-pNext-pNext",
9205          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9206        },
9207        {
9208          "vuid": "VUID-VkMemoryGetFdInfoKHR-memory-parameter",
9209          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9210        },
9211        {
9212          "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-parameter",
9213          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
9214        }
9215      ]
9216    },
9217    "vkGetMemoryFdPropertiesKHR": {
9218      "(VK_KHR_external_memory_fd)": [
9219        {
9220          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-fd-00673",
9221          "text": " <code>fd</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API"
9222        },
9223        {
9224          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-00674",
9225          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>"
9226        },
9227        {
9228          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-device-parameter",
9229          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9230        },
9231        {
9232          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter",
9233          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
9234        },
9235        {
9236          "vuid": "VUID-vkGetMemoryFdPropertiesKHR-pMemoryFdProperties-parameter",
9237          "text": " <code>pMemoryFdProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryFdPropertiesKHR\">VkMemoryFdPropertiesKHR</a> structure"
9238        }
9239      ]
9240    },
9241    "VkMemoryFdPropertiesKHR": {
9242      "(VK_KHR_external_memory_fd)": [
9243        {
9244          "vuid": "VUID-VkMemoryFdPropertiesKHR-sType-sType",
9245          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR</code>"
9246        },
9247        {
9248          "vuid": "VUID-VkMemoryFdPropertiesKHR-pNext-pNext",
9249          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9250        }
9251      ]
9252    },
9253    "VkImportMemoryHostPointerInfoEXT": {
9254      "(VK_EXT_external_memory_host)": [
9255        {
9256          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01747",
9257          "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>"
9258        },
9259        {
9260          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01748",
9261          "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>"
9262        },
9263        {
9264          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749",
9265          "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
9266        },
9267        {
9268          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01750",
9269          "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"
9270        },
9271        {
9272          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01751",
9273          "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"
9274        },
9275        {
9276          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-sType-sType",
9277          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT</code>"
9278        },
9279        {
9280          "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter",
9281          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
9282        }
9283      ]
9284    },
9285    "vkGetMemoryHostPointerPropertiesEXT": {
9286      "(VK_EXT_external_memory_host)": [
9287        {
9288          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01752",
9289          "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>"
9290        },
9291        {
9292          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753",
9293          "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
9294        },
9295        {
9296          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01754",
9297          "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"
9298        },
9299        {
9300          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01755",
9301          "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"
9302        },
9303        {
9304          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter",
9305          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9306        },
9307        {
9308          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter",
9309          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
9310        },
9311        {
9312          "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter",
9313          "text": " <code>pMemoryHostPointerProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryHostPointerPropertiesEXT\">VkMemoryHostPointerPropertiesEXT</a> structure"
9314        }
9315      ]
9316    },
9317    "VkMemoryHostPointerPropertiesEXT": {
9318      "(VK_EXT_external_memory_host)": [
9319        {
9320          "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-sType-sType",
9321          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT</code>"
9322        },
9323        {
9324          "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-pNext-pNext",
9325          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9326        }
9327      ]
9328    },
9329    "VkImportAndroidHardwareBufferInfoANDROID": {
9330      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
9331        {
9332          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01880",
9333          "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>"
9334        },
9335        {
9336          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01881",
9337          "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>"
9338        },
9339        {
9340          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-sType-sType",
9341          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>"
9342        },
9343        {
9344          "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter",
9345          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>AHardwareBuffer</code> value"
9346        }
9347      ]
9348    },
9349    "vkGetMemoryAndroidHardwareBufferANDROID": {
9350      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
9351        {
9352          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-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-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter",
9357          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetAndroidHardwareBufferInfoANDROID\">VkMemoryGetAndroidHardwareBufferInfoANDROID</a> structure"
9358        },
9359        {
9360          "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pBuffer-parameter",
9361          "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid pointer to an <code>AHardwareBuffer</code> value"
9362        }
9363      ]
9364    },
9365    "VkMemoryGetAndroidHardwareBufferInfoANDROID": {
9366      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
9367        {
9368          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-handleTypes-01882",
9369          "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"
9370        },
9371        {
9372          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-01883",
9373          "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>"
9374        },
9375        {
9376          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-sType-sType",
9377          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>"
9378        },
9379        {
9380          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-pNext",
9381          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9382        },
9383        {
9384          "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-memory-parameter",
9385          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9386        }
9387      ]
9388    },
9389    "vkGetAndroidHardwareBufferPropertiesANDROID": {
9390      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
9391        {
9392          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884",
9393          "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>"
9394        },
9395        {
9396          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter",
9397          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9398        },
9399        {
9400          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter",
9401          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>AHardwareBuffer</code> value"
9402        },
9403        {
9404          "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-pProperties-parameter",
9405          "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAndroidHardwareBufferPropertiesANDROID\">VkAndroidHardwareBufferPropertiesANDROID</a> structure"
9406        }
9407      ]
9408    },
9409    "VkAndroidHardwareBufferPropertiesANDROID": {
9410      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
9411        {
9412          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType",
9413          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID</code>"
9414        },
9415        {
9416          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-pNext-pNext",
9417          "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>"
9418        },
9419        {
9420          "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-unique",
9421          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
9422        }
9423      ]
9424    },
9425    "VkAndroidHardwareBufferFormatPropertiesANDROID": {
9426      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
9427        {
9428          "vuid": "VUID-VkAndroidHardwareBufferFormatPropertiesANDROID-sType-sType",
9429          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID</code>"
9430        }
9431      ]
9432    },
9433    "VkExportMemoryAllocateInfoNV": {
9434      "(VK_NV_external_memory)": [
9435        {
9436          "vuid": "VUID-VkExportMemoryAllocateInfoNV-sType-sType",
9437          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV</code>"
9438        },
9439        {
9440          "vuid": "VUID-VkExportMemoryAllocateInfoNV-handleTypes-parameter",
9441          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
9442        }
9443      ]
9444    },
9445    "VkExportMemoryWin32HandleInfoNV": {
9446      "(VK_NV_external_memory_win32)": [
9447        {
9448          "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-sType-sType",
9449          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
9450        },
9451        {
9452          "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-pAttributes-parameter",
9453          "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"
9454        }
9455      ]
9456    },
9457    "VkImportMemoryWin32HandleInfoNV": {
9458      "(VK_NV_external_memory_win32)": [
9459        {
9460          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-01327",
9461          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not have more than one bit set"
9462        },
9463        {
9464          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handle-01328",
9465          "text": " <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle to memory, obtained as specified by <code>handleType</code>"
9466        },
9467        {
9468          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-sType-sType",
9469          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
9470        },
9471        {
9472          "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-parameter",
9473          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
9474        }
9475      ]
9476    },
9477    "vkGetMemoryWin32HandleNV": {
9478      "(VK_NV_external_memory_win32)": [
9479        {
9480          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-01326",
9481          "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>"
9482        },
9483        {
9484          "vuid": "VUID-vkGetMemoryWin32HandleNV-device-parameter",
9485          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9486        },
9487        {
9488          "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parameter",
9489          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9490        },
9491        {
9492          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-parameter",
9493          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
9494        },
9495        {
9496          "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-requiredbitmask",
9497          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
9498        },
9499        {
9500          "vuid": "VUID-vkGetMemoryWin32HandleNV-pHandle-parameter",
9501          "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
9502        },
9503        {
9504          "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parent",
9505          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9506        }
9507      ]
9508    },
9509    "VkMemoryAllocateFlagsInfo": {
9510      "(VK_VERSION_1_1,VK_KHR_device_group)": [
9511        {
9512          "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00675",
9513          "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"
9514        },
9515        {
9516          "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00676",
9517          "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
9518        },
9519        {
9520          "vuid": "VUID-VkMemoryAllocateFlagsInfo-sType-sType",
9521          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO</code>"
9522        },
9523        {
9524          "vuid": "VUID-VkMemoryAllocateFlagsInfo-flags-parameter",
9525          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMemoryAllocateFlagBits\">VkMemoryAllocateFlagBits</a> values"
9526        }
9527      ]
9528    },
9529    "VkMemoryOpaqueCaptureAddressAllocateInfo": {
9530      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
9531        {
9532          "vuid": "VUID-VkMemoryOpaqueCaptureAddressAllocateInfo-sType-sType",
9533          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO</code>"
9534        }
9535      ]
9536    },
9537    "vkFreeMemory": {
9538      "core": [
9539        {
9540          "vuid": "VUID-vkFreeMemory-memory-00677",
9541          "text": " All submitted commands that refer to <code>memory</code> (via images or buffers) <strong class=\"purple\">must</strong> have completed execution"
9542        },
9543        {
9544          "vuid": "VUID-vkFreeMemory-device-parameter",
9545          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9546        },
9547        {
9548          "vuid": "VUID-vkFreeMemory-memory-parameter",
9549          "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"
9550        },
9551        {
9552          "vuid": "VUID-vkFreeMemory-pAllocator-parameter",
9553          "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"
9554        },
9555        {
9556          "vuid": "VUID-vkFreeMemory-memory-parent",
9557          "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>"
9558        }
9559      ]
9560    },
9561    "vkMapMemory": {
9562      "core": [
9563        {
9564          "vuid": "VUID-vkMapMemory-memory-00678",
9565          "text": " <code>memory</code> <strong class=\"purple\">must</strong> not be currently host mapped"
9566        },
9567        {
9568          "vuid": "VUID-vkMapMemory-offset-00679",
9569          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
9570        },
9571        {
9572          "vuid": "VUID-vkMapMemory-size-00680",
9573          "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>"
9574        },
9575        {
9576          "vuid": "VUID-vkMapMemory-size-00681",
9577          "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>"
9578        },
9579        {
9580          "vuid": "VUID-vkMapMemory-memory-00682",
9581          "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>"
9582        },
9583        {
9584          "vuid": "VUID-vkMapMemory-device-parameter",
9585          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9586        },
9587        {
9588          "vuid": "VUID-vkMapMemory-memory-parameter",
9589          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9590        },
9591        {
9592          "vuid": "VUID-vkMapMemory-flags-zerobitmask",
9593          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
9594        },
9595        {
9596          "vuid": "VUID-vkMapMemory-ppData-parameter",
9597          "text": " <code>ppData</code> <strong class=\"purple\">must</strong> be a valid pointer to a pointer value"
9598        },
9599        {
9600          "vuid": "VUID-vkMapMemory-memory-parent",
9601          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9602        }
9603      ],
9604      "(VK_KHR_device_group)": [
9605        {
9606          "vuid": "VUID-vkMapMemory-memory-00683",
9607          "text": " <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated with multiple instances"
9608        }
9609      ]
9610    },
9611    "vkFlushMappedMemoryRanges": {
9612      "core": [
9613        {
9614          "vuid": "VUID-vkFlushMappedMemoryRanges-device-parameter",
9615          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9616        },
9617        {
9618          "vuid": "VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter",
9619          "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"
9620        },
9621        {
9622          "vuid": "VUID-vkFlushMappedMemoryRanges-memoryRangeCount-arraylength",
9623          "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9624        }
9625      ]
9626    },
9627    "vkInvalidateMappedMemoryRanges": {
9628      "core": [
9629        {
9630          "vuid": "VUID-vkInvalidateMappedMemoryRanges-device-parameter",
9631          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9632        },
9633        {
9634          "vuid": "VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter",
9635          "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"
9636        },
9637        {
9638          "vuid": "VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength",
9639          "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9640        }
9641      ]
9642    },
9643    "VkMappedMemoryRange": {
9644      "core": [
9645        {
9646          "vuid": "VUID-VkMappedMemoryRange-memory-00684",
9647          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped"
9648        },
9649        {
9650          "vuid": "VUID-VkMappedMemoryRange-size-00685",
9651          "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>"
9652        },
9653        {
9654          "vuid": "VUID-VkMappedMemoryRange-size-00686",
9655          "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>"
9656        },
9657        {
9658          "vuid": "VUID-VkMappedMemoryRange-size-01389",
9659          "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"
9660        },
9661        {
9662          "vuid": "VUID-VkMappedMemoryRange-offset-00687",
9663          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>"
9664        },
9665        {
9666          "vuid": "VUID-VkMappedMemoryRange-size-01390",
9667          "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>"
9668        },
9669        {
9670          "vuid": "VUID-VkMappedMemoryRange-sType-sType",
9671          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE</code>"
9672        },
9673        {
9674          "vuid": "VUID-VkMappedMemoryRange-pNext-pNext",
9675          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9676        },
9677        {
9678          "vuid": "VUID-VkMappedMemoryRange-memory-parameter",
9679          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9680        }
9681      ]
9682    },
9683    "vkUnmapMemory": {
9684      "core": [
9685        {
9686          "vuid": "VUID-vkUnmapMemory-memory-00689",
9687          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped"
9688        },
9689        {
9690          "vuid": "VUID-vkUnmapMemory-device-parameter",
9691          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9692        },
9693        {
9694          "vuid": "VUID-vkUnmapMemory-memory-parameter",
9695          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9696        },
9697        {
9698          "vuid": "VUID-vkUnmapMemory-memory-parent",
9699          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9700        }
9701      ]
9702    },
9703    "vkGetDeviceMemoryCommitment": {
9704      "core": [
9705        {
9706          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-00690",
9707          "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>"
9708        },
9709        {
9710          "vuid": "VUID-vkGetDeviceMemoryCommitment-device-parameter",
9711          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9712        },
9713        {
9714          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parameter",
9715          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9716        },
9717        {
9718          "vuid": "VUID-vkGetDeviceMemoryCommitment-pCommittedMemoryInBytes-parameter",
9719          "text": " <code>pCommittedMemoryInBytes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceSize</code> value"
9720        },
9721        {
9722          "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parent",
9723          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9724        }
9725      ]
9726    },
9727    "vkGetDeviceGroupPeerMemoryFeatures": {
9728      "(VK_VERSION_1_1,VK_KHR_device_group)": [
9729        {
9730          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-heapIndex-00691",
9731          "text": " <code>heapIndex</code> <strong class=\"purple\">must</strong> be less than <code>memoryHeapCount</code>"
9732        },
9733        {
9734          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00692",
9735          "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
9736        },
9737        {
9738          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-remoteDeviceIndex-00693",
9739          "text": " <code>remoteDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
9740        },
9741        {
9742          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00694",
9743          "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> not equal <code>remoteDeviceIndex</code>"
9744        },
9745        {
9746          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter",
9747          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9748        },
9749        {
9750          "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-parameter",
9751          "text": " <code>pPeerMemoryFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPeerMemoryFeatureFlags\">VkPeerMemoryFeatureFlags</a> value"
9752        }
9753      ]
9754    },
9755    "vkGetDeviceMemoryOpaqueCaptureAddress": {
9756      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
9757        {
9758          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-None-03334",
9759          "text": " The <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled"
9760        },
9761        {
9762          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-03335",
9763          "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"
9764        },
9765        {
9766          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-parameter",
9767          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9768        },
9769        {
9770          "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-pInfo-parameter",
9771          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceMemoryOpaqueCaptureAddressInfo\">VkDeviceMemoryOpaqueCaptureAddressInfo</a> structure"
9772        }
9773      ]
9774    },
9775    "VkDeviceMemoryOpaqueCaptureAddressInfo": {
9776      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
9777        {
9778          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-03336",
9779          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code>"
9780        },
9781        {
9782          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-sType-sType",
9783          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO</code>"
9784        },
9785        {
9786          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-pNext-pNext",
9787          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9788        },
9789        {
9790          "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-parameter",
9791          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9792        }
9793      ]
9794    },
9795    "vkCreateBuffer": {
9796      "core": [
9797        {
9798          "vuid": "VUID-vkCreateBuffer-flags-00911",
9799          "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>"
9800        },
9801        {
9802          "vuid": "VUID-vkCreateBuffer-device-parameter",
9803          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9804        },
9805        {
9806          "vuid": "VUID-vkCreateBuffer-pCreateInfo-parameter",
9807          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a> structure"
9808        },
9809        {
9810          "vuid": "VUID-vkCreateBuffer-pAllocator-parameter",
9811          "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"
9812        },
9813        {
9814          "vuid": "VUID-vkCreateBuffer-pBuffer-parameter",
9815          "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBuffer\">VkBuffer</a> handle"
9816        }
9817      ]
9818    },
9819    "VkBufferCreateInfo": {
9820      "core": [
9821        {
9822          "vuid": "VUID-VkBufferCreateInfo-size-00912",
9823          "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9824        },
9825        {
9826          "vuid": "VUID-VkBufferCreateInfo-sharingMode-00913",
9827          "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"
9828        },
9829        {
9830          "vuid": "VUID-VkBufferCreateInfo-sharingMode-00914",
9831          "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>"
9832        },
9833        {
9834          "vuid": "VUID-VkBufferCreateInfo-flags-00915",
9835          "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>"
9836        },
9837        {
9838          "vuid": "VUID-VkBufferCreateInfo-flags-00916",
9839          "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>"
9840        },
9841        {
9842          "vuid": "VUID-VkBufferCreateInfo-flags-00917",
9843          "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>"
9844        },
9845        {
9846          "vuid": "VUID-VkBufferCreateInfo-flags-00918",
9847          "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>"
9848        },
9849        {
9850          "vuid": "VUID-VkBufferCreateInfo-sType-sType",
9851          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO</code>"
9852        },
9853        {
9854          "vuid": "VUID-VkBufferCreateInfo-pNext-pNext",
9855          "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>"
9856        },
9857        {
9858          "vuid": "VUID-VkBufferCreateInfo-sType-unique",
9859          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
9860        },
9861        {
9862          "vuid": "VUID-VkBufferCreateInfo-flags-parameter",
9863          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values"
9864        },
9865        {
9866          "vuid": "VUID-VkBufferCreateInfo-usage-parameter",
9867          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values"
9868        },
9869        {
9870          "vuid": "VUID-VkBufferCreateInfo-usage-requiredbitmask",
9871          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
9872        },
9873        {
9874          "vuid": "VUID-VkBufferCreateInfo-sharingMode-parameter",
9875          "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
9876        }
9877      ],
9878      "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
9879        {
9880          "vuid": "VUID-VkBufferCreateInfo-sharingMode-01391",
9881          "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>"
9882        }
9883      ],
9884      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
9885        {
9886          "vuid": "VUID-VkBufferCreateInfo-sharingMode-01419",
9887          "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>"
9888        }
9889      ],
9890      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
9891        {
9892          "vuid": "VUID-VkBufferCreateInfo-pNext-00920",
9893          "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>"
9894        }
9895      ],
9896      "(VK_VERSION_1_1)": [
9897        {
9898          "vuid": "VUID-VkBufferCreateInfo-flags-01887",
9899          "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>"
9900        },
9901        {
9902          "vuid": "VUID-VkBufferCreateInfo-None-01888",
9903          "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"
9904        }
9905      ],
9906      "(VK_NV_dedicated_allocation)": [
9907        {
9908          "vuid": "VUID-VkBufferCreateInfo-pNext-01571",
9909          "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>"
9910        }
9911      ],
9912      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)+(VK_EXT_buffer_device_address)": [
9913        {
9914          "vuid": "VUID-VkBufferCreateInfo-deviceAddress-02604",
9915          "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>"
9916        }
9917      ],
9918      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)+(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
9919        {
9920          "vuid": "VUID-VkBufferCreateInfo-opaqueCaptureAddress-03337",
9921          "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>"
9922        }
9923      ],
9924      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)": [
9925        {
9926          "vuid": "VUID-VkBufferCreateInfo-flags-03338",
9927          "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"
9928        }
9929      ]
9930    },
9931    "VkDedicatedAllocationBufferCreateInfoNV": {
9932      "(VK_NV_dedicated_allocation)": [
9933        {
9934          "vuid": "VUID-VkDedicatedAllocationBufferCreateInfoNV-sType-sType",
9935          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV</code>"
9936        }
9937      ]
9938    },
9939    "VkExternalMemoryBufferCreateInfo": {
9940      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
9941        {
9942          "vuid": "VUID-VkExternalMemoryBufferCreateInfo-sType-sType",
9943          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO</code>"
9944        },
9945        {
9946          "vuid": "VUID-VkExternalMemoryBufferCreateInfo-handleTypes-parameter",
9947          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
9948        }
9949      ]
9950    },
9951    "VkBufferOpaqueCaptureAddressCreateInfo": {
9952      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
9953        {
9954          "vuid": "VUID-VkBufferOpaqueCaptureAddressCreateInfo-sType-sType",
9955          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO</code>"
9956        }
9957      ]
9958    },
9959    "VkBufferDeviceAddressCreateInfoEXT": {
9960      "(VK_EXT_buffer_device_address)": [
9961        {
9962          "vuid": "VUID-VkBufferDeviceAddressCreateInfoEXT-sType-sType",
9963          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT</code>"
9964        }
9965      ]
9966    },
9967    "vkDestroyBuffer": {
9968      "core": [
9969        {
9970          "vuid": "VUID-vkDestroyBuffer-buffer-00922",
9971          "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"
9972        },
9973        {
9974          "vuid": "VUID-vkDestroyBuffer-buffer-00923",
9975          "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"
9976        },
9977        {
9978          "vuid": "VUID-vkDestroyBuffer-buffer-00924",
9979          "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>"
9980        },
9981        {
9982          "vuid": "VUID-vkDestroyBuffer-device-parameter",
9983          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
9984        },
9985        {
9986          "vuid": "VUID-vkDestroyBuffer-buffer-parameter",
9987          "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"
9988        },
9989        {
9990          "vuid": "VUID-vkDestroyBuffer-pAllocator-parameter",
9991          "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"
9992        },
9993        {
9994          "vuid": "VUID-vkDestroyBuffer-buffer-parent",
9995          "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>"
9996        }
9997      ]
9998    },
9999    "vkCreateBufferView": {
10000      "core": [
10001        {
10002          "vuid": "VUID-vkCreateBufferView-device-parameter",
10003          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
10004        },
10005        {
10006          "vuid": "VUID-vkCreateBufferView-pCreateInfo-parameter",
10007          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferViewCreateInfo\">VkBufferViewCreateInfo</a> structure"
10008        },
10009        {
10010          "vuid": "VUID-vkCreateBufferView-pAllocator-parameter",
10011          "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"
10012        },
10013        {
10014          "vuid": "VUID-vkCreateBufferView-pView-parameter",
10015          "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBufferView\">VkBufferView</a> handle"
10016        }
10017      ]
10018    },
10019    "VkBufferViewCreateInfo": {
10020      "core": [
10021        {
10022          "vuid": "VUID-VkBufferViewCreateInfo-offset-00925",
10023          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
10024        },
10025        {
10026          "vuid": "VUID-VkBufferViewCreateInfo-range-00928",
10027          "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>"
10028        },
10029        {
10030          "vuid": "VUID-VkBufferViewCreateInfo-range-00929",
10031          "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>"
10032        },
10033        {
10034          "vuid": "VUID-VkBufferViewCreateInfo-range-00930",
10035          "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>"
10036        },
10037        {
10038          "vuid": "VUID-VkBufferViewCreateInfo-offset-00931",
10039          "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>"
10040        },
10041        {
10042          "vuid": "VUID-VkBufferViewCreateInfo-range-04059",
10043          "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>"
10044        },
10045        {
10046          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00932",
10047          "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>"
10048        },
10049        {
10050          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00933",
10051          "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>"
10052        },
10053        {
10054          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00934",
10055          "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>"
10056        },
10057        {
10058          "vuid": "VUID-VkBufferViewCreateInfo-buffer-00935",
10059          "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"
10060        },
10061        {
10062          "vuid": "VUID-VkBufferViewCreateInfo-sType-sType",
10063          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO</code>"
10064        },
10065        {
10066          "vuid": "VUID-VkBufferViewCreateInfo-pNext-pNext",
10067          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
10068        },
10069        {
10070          "vuid": "VUID-VkBufferViewCreateInfo-flags-zerobitmask",
10071          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
10072        },
10073        {
10074          "vuid": "VUID-VkBufferViewCreateInfo-buffer-parameter",
10075          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
10076        },
10077        {
10078          "vuid": "VUID-VkBufferViewCreateInfo-format-parameter",
10079          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
10080        }
10081      ],
10082      "!(VK_EXT_texel_buffer_alignment)": [
10083        {
10084          "vuid": "VUID-VkBufferViewCreateInfo-offset-00926",
10085          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>"
10086        }
10087      ],
10088      "(VK_EXT_texel_buffer_alignment)": [
10089        {
10090          "vuid": "VUID-VkBufferViewCreateInfo-offset-02749",
10091          "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>"
10092        },
10093        {
10094          "vuid": "VUID-VkBufferViewCreateInfo-buffer-02750",
10095          "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"
10096        },
10097        {
10098          "vuid": "VUID-VkBufferViewCreateInfo-buffer-02751",
10099          "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"
10100        }
10101      ]
10102    },
10103    "vkDestroyBufferView": {
10104      "core": [
10105        {
10106          "vuid": "VUID-vkDestroyBufferView-bufferView-00936",
10107          "text": " All submitted commands that refer to <code>bufferView</code> <strong class=\"purple\">must</strong> have completed execution"
10108        },
10109        {
10110          "vuid": "VUID-vkDestroyBufferView-bufferView-00937",
10111          "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"
10112        },
10113        {
10114          "vuid": "VUID-vkDestroyBufferView-bufferView-00938",
10115          "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>"
10116        },
10117        {
10118          "vuid": "VUID-vkDestroyBufferView-device-parameter",
10119          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
10120        },
10121        {
10122          "vuid": "VUID-vkDestroyBufferView-bufferView-parameter",
10123          "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"
10124        },
10125        {
10126          "vuid": "VUID-vkDestroyBufferView-pAllocator-parameter",
10127          "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"
10128        },
10129        {
10130          "vuid": "VUID-vkDestroyBufferView-bufferView-parent",
10131          "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>"
10132        }
10133      ]
10134    },
10135    "vkCreateImage": {
10136      "core": [
10137        {
10138          "vuid": "VUID-vkCreateImage-flags-00939",
10139          "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>"
10140        },
10141        {
10142          "vuid": "VUID-vkCreateImage-device-parameter",
10143          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
10144        },
10145        {
10146          "vuid": "VUID-vkCreateImage-pCreateInfo-parameter",
10147          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure"
10148        },
10149        {
10150          "vuid": "VUID-vkCreateImage-pAllocator-parameter",
10151          "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"
10152        },
10153        {
10154          "vuid": "VUID-vkCreateImage-pImage-parameter",
10155          "text": " <code>pImage</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImage\">VkImage</a> handle"
10156        }
10157      ]
10158    },
10159    "VkImageCreateInfo": {
10160      "core": [
10161        {
10162          "vuid": "VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251",
10163          "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>"
10164        },
10165        {
10166          "vuid": "VUID-VkImageCreateInfo-sharingMode-00941",
10167          "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"
10168        },
10169        {
10170          "vuid": "VUID-VkImageCreateInfo-sharingMode-00942",
10171          "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>"
10172        },
10173        {
10174          "vuid": "VUID-VkImageCreateInfo-extent-00944",
10175          "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
10176        },
10177        {
10178          "vuid": "VUID-VkImageCreateInfo-extent-00945",
10179          "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
10180        },
10181        {
10182          "vuid": "VUID-VkImageCreateInfo-extent-00946",
10183          "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
10184        },
10185        {
10186          "vuid": "VUID-VkImageCreateInfo-mipLevels-00947",
10187          "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
10188        },
10189        {
10190          "vuid": "VUID-VkImageCreateInfo-arrayLayers-00948",
10191          "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
10192        },
10193        {
10194          "vuid": "VUID-VkImageCreateInfo-flags-00949",
10195          "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>"
10196        },
10197        {
10198          "vuid": "VUID-VkImageCreateInfo-extent-02252",
10199          "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>)"
10200        },
10201        {
10202          "vuid": "VUID-VkImageCreateInfo-extent-02253",
10203          "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>)"
10204        },
10205        {
10206          "vuid": "VUID-VkImageCreateInfo-extent-02254",
10207          "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>)"
10208        },
10209        {
10210          "vuid": "VUID-VkImageCreateInfo-imageType-00954",
10211          "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"
10212        },
10213        {
10214          "vuid": "VUID-VkImageCreateInfo-imageType-00956",
10215          "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>"
10216        },
10217        {
10218          "vuid": "VUID-VkImageCreateInfo-imageType-00957",
10219          "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>"
10220        },
10221        {
10222          "vuid": "VUID-VkImageCreateInfo-mipLevels-00958",
10223          "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>"
10224        },
10225        {
10226          "vuid": "VUID-VkImageCreateInfo-mipLevels-02255",
10227          "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>)"
10228        },
10229        {
10230          "vuid": "VUID-VkImageCreateInfo-arrayLayers-02256",
10231          "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>)"
10232        },
10233        {
10234          "vuid": "VUID-VkImageCreateInfo-imageType-00961",
10235          "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be <code>1</code>"
10236        },
10237        {
10238          "vuid": "VUID-VkImageCreateInfo-samples-02257",
10239          "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>,"
10240        },
10241        {
10242          "vuid": "VUID-VkImageCreateInfo-usage-00963",
10243          "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"
10244        },
10245        {
10246          "vuid": "VUID-VkImageCreateInfo-usage-00964",
10247          "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>"
10248        },
10249        {
10250          "vuid": "VUID-VkImageCreateInfo-usage-00965",
10251          "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>"
10252        },
10253        {
10254          "vuid": "VUID-VkImageCreateInfo-usage-00966",
10255          "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>"
10256        },
10257        {
10258          "vuid": "VUID-VkImageCreateInfo-samples-02258",
10259          "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>)"
10260        },
10261        {
10262          "vuid": "VUID-VkImageCreateInfo-usage-00968",
10263          "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>"
10264        },
10265        {
10266          "vuid": "VUID-VkImageCreateInfo-flags-00969",
10267          "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>"
10268        },
10269        {
10270          "vuid": "VUID-VkImageCreateInfo-flags-01924",
10271          "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>"
10272        },
10273        {
10274          "vuid": "VUID-VkImageCreateInfo-tiling-04121",
10275          "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_LINEAR</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
10276        },
10277        {
10278          "vuid": "VUID-VkImageCreateInfo-imageType-00970",
10279          "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>"
10280        },
10281        {
10282          "vuid": "VUID-VkImageCreateInfo-imageType-00971",
10283          "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>"
10284        },
10285        {
10286          "vuid": "VUID-VkImageCreateInfo-imageType-00972",
10287          "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>"
10288        },
10289        {
10290          "vuid": "VUID-VkImageCreateInfo-imageType-00973",
10291          "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>"
10292        },
10293        {
10294          "vuid": "VUID-VkImageCreateInfo-imageType-00974",
10295          "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>"
10296        },
10297        {
10298          "vuid": "VUID-VkImageCreateInfo-imageType-00975",
10299          "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>"
10300        },
10301        {
10302          "vuid": "VUID-VkImageCreateInfo-imageType-00976",
10303          "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>"
10304        },
10305        {
10306          "vuid": "VUID-VkImageCreateInfo-flags-00987",
10307          "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>"
10308        },
10309        {
10310          "vuid": "VUID-VkImageCreateInfo-None-01925",
10311          "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"
10312        },
10313        {
10314          "vuid": "VUID-VkImageCreateInfo-initialLayout-00993",
10315          "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
10316        },
10317        {
10318          "vuid": "VUID-VkImageCreateInfo-sType-sType",
10319          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO</code>"
10320        },
10321        {
10322          "vuid": "VUID-VkImageCreateInfo-pNext-pNext",
10323          "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>"
10324        },
10325        {
10326          "vuid": "VUID-VkImageCreateInfo-sType-unique",
10327          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
10328        },
10329        {
10330          "vuid": "VUID-VkImageCreateInfo-flags-parameter",
10331          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
10332        },
10333        {
10334          "vuid": "VUID-VkImageCreateInfo-imageType-parameter",
10335          "text": " <code>imageType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
10336        },
10337        {
10338          "vuid": "VUID-VkImageCreateInfo-format-parameter",
10339          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
10340        },
10341        {
10342          "vuid": "VUID-VkImageCreateInfo-samples-parameter",
10343          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
10344        },
10345        {
10346          "vuid": "VUID-VkImageCreateInfo-tiling-parameter",
10347          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
10348        },
10349        {
10350          "vuid": "VUID-VkImageCreateInfo-usage-parameter",
10351          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
10352        },
10353        {
10354          "vuid": "VUID-VkImageCreateInfo-usage-requiredbitmask",
10355          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
10356        },
10357        {
10358          "vuid": "VUID-VkImageCreateInfo-sharingMode-parameter",
10359          "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
10360        },
10361        {
10362          "vuid": "VUID-VkImageCreateInfo-initialLayout-parameter",
10363          "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
10364        }
10365      ],
10366      "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
10367        {
10368          "vuid": "VUID-VkImageCreateInfo-sharingMode-01392",
10369          "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>"
10370        }
10371      ],
10372      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
10373        {
10374          "vuid": "VUID-VkImageCreateInfo-sharingMode-01420",
10375          "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>"
10376        }
10377      ],
10378      "!(VK_ANDROID_external_memory_android_hardware_buffer)": [
10379        {
10380          "vuid": "VUID-VkImageCreateInfo-format-00943",
10381          "text": " <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>"
10382        }
10383      ],
10384      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
10385        {
10386          "vuid": "VUID-VkImageCreateInfo-pNext-01974",
10387          "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>"
10388        },
10389        {
10390          "vuid": "VUID-VkImageCreateInfo-pNext-01975",
10391          "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>"
10392        },
10393        {
10394          "vuid": "VUID-VkImageCreateInfo-pNext-02393",
10395          "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>"
10396        },
10397        {
10398          "vuid": "VUID-VkImageCreateInfo-pNext-02394",
10399          "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>"
10400        },
10401        {
10402          "vuid": "VUID-VkImageCreateInfo-pNext-02396",
10403          "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>"
10404        },
10405        {
10406          "vuid": "VUID-VkImageCreateInfo-pNext-02397",
10407          "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>"
10408        },
10409        {
10410          "vuid": "VUID-VkImageCreateInfo-pNext-02398",
10411          "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>"
10412        }
10413      ],
10414      "(VK_EXT_fragment_density_map)": [
10415        {
10416          "vuid": "VUID-VkImageCreateInfo-flags-02557",
10417          "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>"
10418        },
10419        {
10420          "vuid": "VUID-VkImageCreateInfo-samples-02558",
10421          "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>"
10422        },
10423        {
10424          "vuid": "VUID-VkImageCreateInfo-usage-02559",
10425          "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\\)"
10426        },
10427        {
10428          "vuid": "VUID-VkImageCreateInfo-usage-02560",
10429          "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\\)"
10430        },
10431        {
10432          "vuid": "VUID-VkImageCreateInfo-flags-02565",
10433          "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>"
10434        },
10435        {
10436          "vuid": "VUID-VkImageCreateInfo-flags-02566",
10437          "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>"
10438        },
10439        {
10440          "vuid": "VUID-VkImageCreateInfo-flags-02567",
10441          "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>"
10442        },
10443        {
10444          "vuid": "VUID-VkImageCreateInfo-flags-02568",
10445          "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>"
10446        }
10447      ],
10448      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
10449        {
10450          "vuid": "VUID-VkImageCreateInfo-flags-00950",
10451          "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>"
10452        }
10453      ],
10454      "(VK_VERSION_1_1)": [
10455        {
10456          "vuid": "VUID-VkImageCreateInfo-flags-01890",
10457          "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>"
10458        },
10459        {
10460          "vuid": "VUID-VkImageCreateInfo-None-01891",
10461          "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"
10462        }
10463      ],
10464      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_NV_external_memory)": [
10465        {
10466          "vuid": "VUID-VkImageCreateInfo-pNext-00988",
10467          "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"
10468        }
10469      ],
10470      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
10471        {
10472          "vuid": "VUID-VkImageCreateInfo-pNext-00990",
10473          "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>"
10474        }
10475      ],
10476      "(VK_NV_external_memory+VK_NV_external_memory_capabilities)": [
10477        {
10478          "vuid": "VUID-VkImageCreateInfo-pNext-00991",
10479          "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>"
10480        }
10481      ],
10482      "(VK_VERSION_1_1,VK_KHR_device_group)": [
10483        {
10484          "vuid": "VUID-VkImageCreateInfo-physicalDeviceCount-01421",
10485          "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>"
10486        },
10487        {
10488          "vuid": "VUID-VkImageCreateInfo-flags-02259",
10489          "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>"
10490        }
10491      ],
10492      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
10493        {
10494          "vuid": "VUID-VkImageCreateInfo-flags-01572",
10495          "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>"
10496        },
10497        {
10498          "vuid": "VUID-VkImageCreateInfo-flags-01573",
10499          "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>"
10500        }
10501      ],
10502      "(VK_VERSION_1_1,VK_KHR_external_memory,VK_NV_external_memory)": [
10503        {
10504          "vuid": "VUID-VkImageCreateInfo-pNext-01443",
10505          "text": "     If the <code>pNext</code> chain includes a ifdef::VK_VERSION_1_1,VK_KHR_external_memory[<a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>]"
10506        }
10507      ],
10508      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10509        {
10510          "vuid": "VUID-VkImageCreateInfo-format-02561",
10511          "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"
10512        },
10513        {
10514          "vuid": "VUID-VkImageCreateInfo-format-02562",
10515          "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>"
10516        },
10517        {
10518          "vuid": "VUID-VkImageCreateInfo-format-02563",
10519          "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>"
10520        },
10521        {
10522          "vuid": "VUID-VkImageCreateInfo-imageCreateFormatFeatures-02260",
10523          "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>"
10524        },
10525        {
10526          "vuid": "VUID-VkImageCreateInfo-format-01577",
10527          "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>"
10528        }
10529      ],
10530      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_ycbcr_image_arrays)": [
10531        {
10532          "vuid": "VUID-VkImageCreateInfo-format-02653",
10533          "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"
10534        }
10535      ],
10536      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_ycbcr_image_arrays)": [
10537        {
10538          "vuid": "VUID-VkImageCreateInfo-format-02564",
10539          "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"
10540        }
10541      ],
10542      "(VK_EXT_image_drm_format_modifier)": [
10543        {
10544          "vuid": "VUID-VkImageCreateInfo-tiling-02261",
10545          "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"
10546        },
10547        {
10548          "vuid": "VUID-VkImageCreateInfo-pNext-02262",
10549          "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>"
10550        },
10551        {
10552          "vuid": "VUID-VkImageCreateInfo-tiling-02353",
10553          "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>"
10554        }
10555      ],
10556      "(VK_EXT_sample_locations)": [
10557        {
10558          "vuid": "VUID-VkImageCreateInfo-flags-01533",
10559          "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"
10560        }
10561      ],
10562      "(VK_EXT_separate_stencil_usage)": [
10563        {
10564          "vuid": "VUID-VkImageCreateInfo-format-02795",
10565          "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>"
10566        },
10567        {
10568          "vuid": "VUID-VkImageCreateInfo-format-02796",
10569          "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>"
10570        },
10571        {
10572          "vuid": "VUID-VkImageCreateInfo-format-02797",
10573          "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>"
10574        },
10575        {
10576          "vuid": "VUID-VkImageCreateInfo-format-02798",
10577          "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>"
10578        },
10579        {
10580          "vuid": "VUID-VkImageCreateInfo-Format-02536",
10581          "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>"
10582        },
10583        {
10584          "vuid": "VUID-VkImageCreateInfo-format-02537",
10585          "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>"
10586        },
10587        {
10588          "vuid": "VUID-VkImageCreateInfo-format-02538",
10589          "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>"
10590        }
10591      ],
10592      "(VK_NV_corner_sampled_image)": [
10593        {
10594          "vuid": "VUID-VkImageCreateInfo-flags-02050",
10595          "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>"
10596        },
10597        {
10598          "vuid": "VUID-VkImageCreateInfo-flags-02051",
10599          "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"
10600        },
10601        {
10602          "vuid": "VUID-VkImageCreateInfo-flags-02052",
10603          "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>"
10604        },
10605        {
10606          "vuid": "VUID-VkImageCreateInfo-flags-02053",
10607          "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>"
10608        }
10609      ],
10610      "(VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image)": [
10611        {
10612          "vuid": "VUID-VkImageCreateInfo-imageType-02082",
10613          "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>"
10614        },
10615        {
10616          "vuid": "VUID-VkImageCreateInfo-samples-02083",
10617          "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>"
10618        }
10619      ],
10620      "(VK_NV_shading_rate_image)": [
10621        {
10622          "vuid": "VUID-VkImageCreateInfo-tiling-02084",
10623          "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>"
10624        }
10625      ],
10626      "(VK_KHR_portability_subset)": [
10627        {
10628          "vuid": "VUID-VkImageCreateInfo-imageView2DOn3DImage-04459",
10629          "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>imageView2DOn3DImage</code> is <code>VK_FALSE</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code>."
10630        },
10631        {
10632          "vuid": "VUID-VkImageCreateInfo-multisampleArrayImage-04460",
10633          "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>multisampleArrayImage</code> is <code>VK_FALSE</code>, and <code>samples</code> is not <code>VK_SAMPLE_COUNT_1_BIT</code>, then <code>arrayLayers</code> <strong class=\"purple\">must</strong> be <code>1</code>."
10634        }
10635      ]
10636    },
10637    "VkImageStencilUsageCreateInfo": {
10638      "(VK_EXT_separate_stencil_usage)": [
10639        {
10640          "vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-02539",
10641          "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>"
10642        },
10643        {
10644          "vuid": "VUID-VkImageStencilUsageCreateInfo-sType-sType",
10645          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO</code>"
10646        },
10647        {
10648          "vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-parameter",
10649          "text": " <code>stencilUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
10650        },
10651        {
10652          "vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-requiredbitmask",
10653          "text": " <code>stencilUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
10654        }
10655      ]
10656    },
10657    "VkDedicatedAllocationImageCreateInfoNV": {
10658      "(VK_NV_dedicated_allocation)": [
10659        {
10660          "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-dedicatedAllocation-00994",
10661          "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>"
10662        },
10663        {
10664          "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-sType-sType",
10665          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV</code>"
10666        }
10667      ]
10668    },
10669    "VkExternalMemoryImageCreateInfo": {
10670      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
10671        {
10672          "vuid": "VUID-VkExternalMemoryImageCreateInfo-sType-sType",
10673          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO</code>"
10674        },
10675        {
10676          "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-parameter",
10677          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
10678        },
10679        {
10680          "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-requiredbitmask",
10681          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
10682        }
10683      ]
10684    },
10685    "VkExternalMemoryImageCreateInfoNV": {
10686      "(VK_NV_external_memory)": [
10687        {
10688          "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-sType-sType",
10689          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV</code>"
10690        },
10691        {
10692          "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-handleTypes-parameter",
10693          "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
10694        }
10695      ]
10696    },
10697    "VkExternalFormatANDROID": {
10698      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
10699        {
10700          "vuid": "VUID-VkExternalFormatANDROID-externalFormat-01894",
10701          "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>"
10702        },
10703        {
10704          "vuid": "VUID-VkExternalFormatANDROID-sType-sType",
10705          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID</code>"
10706        }
10707      ]
10708    },
10709    "VkImageSwapchainCreateInfoKHR": {
10710      "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
10711        {
10712          "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995",
10713          "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"
10714        },
10715        {
10716          "vuid": "VUID-VkImageSwapchainCreateInfoKHR-sType-sType",
10717          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR</code>"
10718        },
10719        {
10720          "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-parameter",
10721          "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"
10722        }
10723      ]
10724    },
10725    "VkImageFormatListCreateInfo": {
10726      "(VK_VERSION_1_2,VK_KHR_image_format_list)": [
10727        {
10728          "vuid": "VUID-VkImageFormatListCreateInfo-sType-sType",
10729          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO</code>"
10730        },
10731        {
10732          "vuid": "VUID-VkImageFormatListCreateInfo-pViewFormats-parameter",
10733          "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"
10734        }
10735      ]
10736    },
10737    "VkImageDrmFormatModifierListCreateInfoEXT": {
10738      "(VK_EXT_image_drm_format_modifier)": [
10739        {
10740          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-02263",
10741          "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>"
10742        },
10743        {
10744          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-sType-sType",
10745          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT</code>"
10746        },
10747        {
10748          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-parameter",
10749          "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"
10750        },
10751        {
10752          "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-drmFormatModifierCount-arraylength",
10753          "text": " <code>drmFormatModifierCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
10754        }
10755      ]
10756    },
10757    "VkImageDrmFormatModifierExplicitCreateInfoEXT": {
10758      "(VK_EXT_image_drm_format_modifier)": [
10759        {
10760          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifier-02264",
10761          "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>"
10762        },
10763        {
10764          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifierPlaneCount-02265",
10765          "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>"
10766        },
10767        {
10768          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267",
10769          "text": " For each element of <code>pPlaneLayouts</code>, <code>size</code> <strong class=\"purple\">must</strong> be 0"
10770        },
10771        {
10772          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268",
10773          "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"
10774        },
10775        {
10776          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269",
10777          "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"
10778        },
10779        {
10780          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-sType-sType",
10781          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT</code>"
10782        },
10783        {
10784          "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-pPlaneLayouts-parameter",
10785          "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"
10786        }
10787      ]
10788    },
10789    "vkGetImageSubresourceLayout": {
10790      "!(VK_EXT_image_drm_format_modifier)": [
10791        {
10792          "vuid": "VUID-vkGetImageSubresourceLayout-image-00996",
10793          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>tiling</code> equal to <code>VK_IMAGE_TILING_LINEAR</code>"
10794        }
10795      ],
10796      "(VK_EXT_image_drm_format_modifier)": [
10797        {
10798          "vuid": "VUID-vkGetImageSubresourceLayout-image-02270",
10799          "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>"
10800        },
10801        {
10802          "vuid": "VUID-vkGetImageSubresourceLayout-tiling-02271",
10803          "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>"
10804        }
10805      ],
10806      "core": [
10807        {
10808          "vuid": "VUID-vkGetImageSubresourceLayout-aspectMask-00997",
10809          "text": " The <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set"
10810        },
10811        {
10812          "vuid": "VUID-vkGetImageSubresourceLayout-mipLevel-01716",
10813          "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"
10814        },
10815        {
10816          "vuid": "VUID-vkGetImageSubresourceLayout-arrayLayer-01717",
10817          "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"
10818        },
10819        {
10820          "vuid": "VUID-vkGetImageSubresourceLayout-format-04461",
10821          "text": " If <code>format</code> is a color format, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
10822        },
10823        {
10824          "vuid": "VUID-vkGetImageSubresourceLayout-format-04462",
10825          "text": " If <code>format</code> has a depth component, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> contain <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>"
10826        },
10827        {
10828          "vuid": "VUID-vkGetImageSubresourceLayout-format-04463",
10829          "text": " If <code>format</code> has a stencil component, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> contain <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>"
10830        },
10831        {
10832          "vuid": "VUID-vkGetImageSubresourceLayout-format-04464",
10833          "text": " If <code>format</code> does not contain a stencil or depth component, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>"
10834        },
10835        {
10836          "vuid": "VUID-vkGetImageSubresourceLayout-device-parameter",
10837          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
10838        },
10839        {
10840          "vuid": "VUID-vkGetImageSubresourceLayout-image-parameter",
10841          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
10842        },
10843        {
10844          "vuid": "VUID-vkGetImageSubresourceLayout-pSubresource-parameter",
10845          "text": " <code>pSubresource</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageSubresource\">VkImageSubresource</a> structure"
10846        },
10847        {
10848          "vuid": "VUID-vkGetImageSubresourceLayout-pLayout-parameter",
10849          "text": " <code>pLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSubresourceLayout\">VkSubresourceLayout</a> structure"
10850        },
10851        {
10852          "vuid": "VUID-vkGetImageSubresourceLayout-image-parent",
10853          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
10854        }
10855      ],
10856      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10857        {
10858          "vuid": "VUID-vkGetImageSubresourceLayout-format-01581",
10859          "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>"
10860        },
10861        {
10862          "vuid": "VUID-vkGetImageSubresourceLayout-format-01582",
10863          "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>"
10864        }
10865      ],
10866      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
10867        {
10868          "vuid": "VUID-vkGetImageSubresourceLayout-image-01895",
10869          "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"
10870        }
10871      ]
10872    },
10873    "VkImageSubresource": {
10874      "core": [
10875        {
10876          "vuid": "VUID-VkImageSubresource-aspectMask-parameter",
10877          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
10878        },
10879        {
10880          "vuid": "VUID-VkImageSubresource-aspectMask-requiredbitmask",
10881          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
10882        }
10883      ]
10884    },
10885    "vkGetImageDrmFormatModifierPropertiesEXT": {
10886      "(VK_EXT_image_drm_format_modifier)": [
10887        {
10888          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-02272",
10889          "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>"
10890        },
10891        {
10892          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter",
10893          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
10894        },
10895        {
10896          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parameter",
10897          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
10898        },
10899        {
10900          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-pProperties-parameter",
10901          "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a> structure"
10902        },
10903        {
10904          "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parent",
10905          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
10906        }
10907      ]
10908    },
10909    "VkImageDrmFormatModifierPropertiesEXT": {
10910      "(VK_EXT_image_drm_format_modifier)": [
10911        {
10912          "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-sType-sType",
10913          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT</code>"
10914        },
10915        {
10916          "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-pNext-pNext",
10917          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
10918        }
10919      ]
10920    },
10921    "vkDestroyImage": {
10922      "core": [
10923        {
10924          "vuid": "VUID-vkDestroyImage-image-01000",
10925          "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"
10926        },
10927        {
10928          "vuid": "VUID-vkDestroyImage-image-01001",
10929          "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"
10930        },
10931        {
10932          "vuid": "VUID-vkDestroyImage-image-01002",
10933          "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>"
10934        },
10935        {
10936          "vuid": "VUID-vkDestroyImage-device-parameter",
10937          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
10938        },
10939        {
10940          "vuid": "VUID-vkDestroyImage-image-parameter",
10941          "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"
10942        },
10943        {
10944          "vuid": "VUID-vkDestroyImage-pAllocator-parameter",
10945          "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"
10946        },
10947        {
10948          "vuid": "VUID-vkDestroyImage-image-parent",
10949          "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>"
10950        }
10951      ]
10952    },
10953    "vkCreateImageView": {
10954      "core": [
10955        {
10956          "vuid": "VUID-vkCreateImageView-device-parameter",
10957          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
10958        },
10959        {
10960          "vuid": "VUID-vkCreateImageView-pCreateInfo-parameter",
10961          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a> structure"
10962        },
10963        {
10964          "vuid": "VUID-vkCreateImageView-pAllocator-parameter",
10965          "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"
10966        },
10967        {
10968          "vuid": "VUID-vkCreateImageView-pView-parameter",
10969          "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageView\">VkImageView</a> handle"
10970        }
10971      ]
10972    },
10973    "VkImageViewCreateInfo": {
10974      "core": [
10975        {
10976          "vuid": "VUID-VkImageViewCreateInfo-image-01003",
10977          "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>"
10978        },
10979        {
10980          "vuid": "VUID-VkImageViewCreateInfo-viewType-01004",
10981          "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>"
10982        },
10983        {
10984          "vuid": "VUID-VkImageViewCreateInfo-image-04441",
10985          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of the usages defined in the <a href=\"#valid-imageview-imageusage\">valid image usage</a> list for image views"
10986        },
10987        {
10988          "vuid": "VUID-VkImageViewCreateInfo-None-02273",
10989          "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"
10990        },
10991        {
10992          "vuid": "VUID-VkImageViewCreateInfo-usage-02274",
10993          "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>"
10994        },
10995        {
10996          "vuid": "VUID-VkImageViewCreateInfo-usage-02275",
10997          "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>"
10998        },
10999        {
11000          "vuid": "VUID-VkImageViewCreateInfo-usage-02276",
11001          "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>"
11002        },
11003        {
11004          "vuid": "VUID-VkImageViewCreateInfo-usage-02277",
11005          "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>"
11006        },
11007        {
11008          "vuid": "VUID-VkImageViewCreateInfo-usage-02652",
11009          "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>"
11010        },
11011        {
11012          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01478",
11013          "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"
11014        },
11015        {
11016          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01718",
11017          "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"
11018        },
11019        {
11020          "vuid": "VUID-VkImageViewCreateInfo-image-01020",
11021          "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"
11022        },
11023        {
11024          "vuid": "VUID-VkImageViewCreateInfo-subResourceRange-01021",
11025          "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>"
11026        },
11027        {
11028          "vuid": "VUID-VkImageViewCreateInfo-viewType-02960",
11029          "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>"
11030        },
11031        {
11032          "vuid": "VUID-VkImageViewCreateInfo-viewType-02961",
11033          "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>"
11034        },
11035        {
11036          "vuid": "VUID-VkImageViewCreateInfo-viewType-02962",
11037          "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>"
11038        },
11039        {
11040          "vuid": "VUID-VkImageViewCreateInfo-viewType-02963",
11041          "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>"
11042        },
11043        {
11044          "vuid": "VUID-VkImageViewCreateInfo-sType-sType",
11045          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO</code>"
11046        },
11047        {
11048          "vuid": "VUID-VkImageViewCreateInfo-pNext-pNext",
11049          "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>"
11050        },
11051        {
11052          "vuid": "VUID-VkImageViewCreateInfo-sType-unique",
11053          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
11054        },
11055        {
11056          "vuid": "VUID-VkImageViewCreateInfo-flags-parameter",
11057          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageViewCreateFlagBits\">VkImageViewCreateFlagBits</a> values"
11058        },
11059        {
11060          "vuid": "VUID-VkImageViewCreateInfo-image-parameter",
11061          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
11062        },
11063        {
11064          "vuid": "VUID-VkImageViewCreateInfo-viewType-parameter",
11065          "text": " <code>viewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value"
11066        },
11067        {
11068          "vuid": "VUID-VkImageViewCreateInfo-format-parameter",
11069          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
11070        },
11071        {
11072          "vuid": "VUID-VkImageViewCreateInfo-components-parameter",
11073          "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentMapping\">VkComponentMapping</a> structure"
11074        },
11075        {
11076          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-parameter",
11077          "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structure"
11078        }
11079      ],
11080      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
11081        {
11082          "vuid": "VUID-VkImageViewCreateInfo-image-01005",
11083          "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>"
11084        },
11085        {
11086          "vuid": "VUID-VkImageViewCreateInfo-image-01482",
11087          "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"
11088        },
11089        {
11090          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01483",
11091          "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"
11092        },
11093        {
11094          "vuid": "VUID-VkImageViewCreateInfo-image-02724",
11095          "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>"
11096        },
11097        {
11098          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-02725",
11099          "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>"
11100        }
11101      ],
11102      "(VK_EXT_fragment_density_map)": [
11103        {
11104          "vuid": "VUID-VkImageViewCreateInfo-image-02571",
11105          "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>"
11106        },
11107        {
11108          "vuid": "VUID-VkImageViewCreateInfo-flags-02572",
11109          "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>"
11110        },
11111        {
11112          "vuid": "VUID-VkImageViewCreateInfo-flags-04116",
11113          "text": " If <code>flags</code> does not contain <code>VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT</code> and <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, its <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>"
11114        }
11115      ],
11116      "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
11117        {
11118          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01480",
11119          "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"
11120        },
11121        {
11122          "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01719",
11123          "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"
11124        }
11125      ],
11126      "!(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11127        {
11128          "vuid": "VUID-VkImageViewCreateInfo-image-01018",
11129          "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>"
11130        }
11131      ],
11132      "(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11133        {
11134          "vuid": "VUID-VkImageViewCreateInfo-image-01759",
11135          "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>"
11136        }
11137      ],
11138      "!(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11139        {
11140          "vuid": "VUID-VkImageViewCreateInfo-image-01760",
11141          "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>"
11142        }
11143      ],
11144      "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11145        {
11146          "vuid": "VUID-VkImageViewCreateInfo-image-01761",
11147          "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>"
11148        }
11149      ],
11150      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
11151        {
11152          "vuid": "VUID-VkImageViewCreateInfo-image-01583",
11153          "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>"
11154        },
11155        {
11156          "vuid": "VUID-VkImageViewCreateInfo-image-01584",
11157          "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>"
11158        }
11159      ],
11160      "(VK_VERSION_1_2,VK_KHR_image_format_list)": [
11161        {
11162          "vuid": "VUID-VkImageViewCreateInfo-pNext-01585",
11163          "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>"
11164        },
11165        {
11166          "vuid": "VUID-VkImageViewCreateInfo-pNext-04082",
11167          "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>"
11168        },
11169        {
11170          "vuid": "VUID-VkImageViewCreateInfo-flags-04083",
11171          "text": " If <code>flags</code> does 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>"
11172        }
11173      ],
11174      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11175        {
11176          "vuid": "VUID-VkImageViewCreateInfo-image-01586",
11177          "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>"
11178        },
11179        {
11180          "vuid": "VUID-VkImageViewCreateInfo-image-01762",
11181          "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>"
11182        },
11183        {
11184          "vuid": "VUID-VkImageViewCreateInfo-pNext-01970",
11185          "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>"
11186        }
11187      ],
11188      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11189        {
11190          "vuid": "VUID-VkImageViewCreateInfo-image-01019",
11191          "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>"
11192        }
11193      ],
11194      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
11195        {
11196          "vuid": "VUID-VkImageViewCreateInfo-image-02399",
11197          "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>"
11198        },
11199        {
11200          "vuid": "VUID-VkImageViewCreateInfo-image-02400",
11201          "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>"
11202        },
11203        {
11204          "vuid": "VUID-VkImageViewCreateInfo-image-02401",
11205          "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>"
11206        }
11207      ],
11208      "(VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image)": [
11209        {
11210          "vuid": "VUID-VkImageViewCreateInfo-image-02086",
11211          "text": " If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</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>"
11212        }
11213      ],
11214      "(VK_NV_shading_rate_image)": [
11215        {
11216          "vuid": "VUID-VkImageViewCreateInfo-image-02087",
11217          "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>"
11218        }
11219      ],
11220      "(VK_KHR_fragment_shading_rate)": [
11221        {
11222          "vuid": "VUID-VkImageViewCreateInfo-usage-04550",
11223          "text": " If the <code>usage</code> for the image view includes <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</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_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>"
11224        },
11225        {
11226          "vuid": "VUID-VkImageViewCreateInfo-usage-04551",
11227          "text": " If the <code>usage</code> for the image view includes <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code> and <a href=\"#limits-layeredShadingRateAttachments\"><code>layeredShadingRateAttachments</code></a> is <code>VK_FALSE</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
11228        }
11229      ],
11230      "(VK_EXT_fragment_density_map)+(VK_EXT_fragment_density_map2)": [
11231        {
11232          "vuid": "VUID-VkImageViewCreateInfo-flags-03567",
11233          "text": " If <a href=\"#features-fragmentDensityMapDeferred\">deferred 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_DEFERRED_BIT_EXT</code>"
11234        },
11235        {
11236          "vuid": "VUID-VkImageViewCreateInfo-flags-03568",
11237          "text": " If <code>flags</code> contains <code>VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT</code>"
11238        },
11239        {
11240          "vuid": "VUID-VkImageViewCreateInfo-image-03569",
11241          "text": " If <code>image</code> was created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code> and <code>usage</code> containing <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxSubsampledArrayLayers\"><code>VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</code>::<code>maxSubsampledArrayLayers</code></a>"
11242        }
11243      ],
11244      "(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_EXT_separate_stencil_usage)": [
11245        {
11246          "vuid": "VUID-VkImageViewCreateInfo-pNext-02661",
11247          "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>"
11248        }
11249      ],
11250      "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_separate_stencil_usage)": [
11251        {
11252          "vuid": "VUID-VkImageViewCreateInfo-pNext-02662",
11253          "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>"
11254        },
11255        {
11256          "vuid": "VUID-VkImageViewCreateInfo-pNext-02663",
11257          "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>"
11258        },
11259        {
11260          "vuid": "VUID-VkImageViewCreateInfo-pNext-02664",
11261          "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>"
11262        }
11263      ],
11264      "(VK_KHR_portability_subset)": [
11265        {
11266          "vuid": "VUID-VkImageViewCreateInfo-imageViewFormatSwizzle-04465",
11267          "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>imageViewFormatSwizzle</code> is <code>VK_FALSE</code>, all elements of <code>components</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>."
11268        },
11269        {
11270          "vuid": "VUID-VkImageViewCreateInfo-imageViewFormatReinterpretation-04466",
11271          "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>imageViewFormatReinterpretation</code> is <code>VK_FALSE</code>, the <a href=\"#VkFormat\">VkFormat</a> in <code>format</code> <strong class=\"purple\">must</strong> not contain a different number of components, or a different number of bits in each component, than the format of the <code>VkImage</code> in <code>image</code>."
11272        }
11273      ]
11274    },
11275    "VkImageViewUsageCreateInfo": {
11276      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
11277        {
11278          "vuid": "VUID-VkImageViewUsageCreateInfo-sType-sType",
11279          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO</code>"
11280        },
11281        {
11282          "vuid": "VUID-VkImageViewUsageCreateInfo-usage-parameter",
11283          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
11284        },
11285        {
11286          "vuid": "VUID-VkImageViewUsageCreateInfo-usage-requiredbitmask",
11287          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
11288        }
11289      ]
11290    },
11291    "VkImageSubresourceRange": {
11292      "core": [
11293        {
11294          "vuid": "VUID-VkImageSubresourceRange-levelCount-01720",
11295          "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>"
11296        },
11297        {
11298          "vuid": "VUID-VkImageSubresourceRange-layerCount-01721",
11299          "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>"
11300        },
11301        {
11302          "vuid": "VUID-VkImageSubresourceRange-aspectMask-parameter",
11303          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
11304        },
11305        {
11306          "vuid": "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask",
11307          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
11308        }
11309      ],
11310      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11311        {
11312          "vuid": "VUID-VkImageSubresourceRange-aspectMask-01670",
11313          "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>"
11314        }
11315      ],
11316      "(VK_EXT_image_drm_format_modifier)": [
11317        {
11318          "vuid": "VUID-VkImageSubresourceRange-aspectMask-02278",
11319          "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>"
11320        }
11321      ]
11322    },
11323    "VkComponentMapping": {
11324      "core": [
11325        {
11326          "vuid": "VUID-VkComponentMapping-r-parameter",
11327          "text": " <code>r</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
11328        },
11329        {
11330          "vuid": "VUID-VkComponentMapping-g-parameter",
11331          "text": " <code>g</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
11332        },
11333        {
11334          "vuid": "VUID-VkComponentMapping-b-parameter",
11335          "text": " <code>b</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
11336        },
11337        {
11338          "vuid": "VUID-VkComponentMapping-a-parameter",
11339          "text": " <code>a</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
11340        }
11341      ]
11342    },
11343    "VkImageViewASTCDecodeModeEXT": {
11344      "(VK_EXT_astc_decode_mode)": [
11345        {
11346          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02230",
11347          "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>"
11348        },
11349        {
11350          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231",
11351          "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>"
11352        },
11353        {
11354          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02232",
11355          "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"
11356        },
11357        {
11358          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-format-04084",
11359          "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>"
11360        },
11361        {
11362          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-sType-sType",
11363          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT</code>"
11364        },
11365        {
11366          "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-parameter",
11367          "text": " <code>decodeMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
11368        }
11369      ]
11370    },
11371    "vkDestroyImageView": {
11372      "core": [
11373        {
11374          "vuid": "VUID-vkDestroyImageView-imageView-01026",
11375          "text": " All submitted commands that refer to <code>imageView</code> <strong class=\"purple\">must</strong> have completed execution"
11376        },
11377        {
11378          "vuid": "VUID-vkDestroyImageView-imageView-01027",
11379          "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"
11380        },
11381        {
11382          "vuid": "VUID-vkDestroyImageView-imageView-01028",
11383          "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>"
11384        },
11385        {
11386          "vuid": "VUID-vkDestroyImageView-device-parameter",
11387          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11388        },
11389        {
11390          "vuid": "VUID-vkDestroyImageView-imageView-parameter",
11391          "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"
11392        },
11393        {
11394          "vuid": "VUID-vkDestroyImageView-pAllocator-parameter",
11395          "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"
11396        },
11397        {
11398          "vuid": "VUID-vkDestroyImageView-imageView-parent",
11399          "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>"
11400        }
11401      ]
11402    },
11403    "vkGetImageViewHandleNVX": {
11404      "(VK_NVX_image_view_handle)": [
11405        {
11406          "vuid": "VUID-vkGetImageViewHandleNVX-device-parameter",
11407          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11408        },
11409        {
11410          "vuid": "VUID-vkGetImageViewHandleNVX-pInfo-parameter",
11411          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageViewHandleInfoNVX\">VkImageViewHandleInfoNVX</a> structure"
11412        }
11413      ]
11414    },
11415    "VkImageViewHandleInfoNVX": {
11416      "(VK_NVX_image_view_handle)": [
11417        {
11418          "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-02654",
11419          "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>"
11420        },
11421        {
11422          "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-02655",
11423          "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>"
11424        },
11425        {
11426          "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02656",
11427          "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"
11428        },
11429        {
11430          "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02657",
11431          "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"
11432        },
11433        {
11434          "vuid": "VUID-VkImageViewHandleInfoNVX-sType-sType",
11435          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX</code>"
11436        },
11437        {
11438          "vuid": "VUID-VkImageViewHandleInfoNVX-pNext-pNext",
11439          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
11440        },
11441        {
11442          "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-parameter",
11443          "text": " <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle"
11444        },
11445        {
11446          "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-parameter",
11447          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
11448        },
11449        {
11450          "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-parameter",
11451          "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"
11452        },
11453        {
11454          "vuid": "VUID-VkImageViewHandleInfoNVX-commonparent",
11455          "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>"
11456        }
11457      ]
11458    },
11459    "vkGetImageViewAddressNVX": {
11460      "(VK_NVX_image_view_handle)": [
11461        {
11462          "vuid": "VUID-vkGetImageViewAddressNVX-device-parameter",
11463          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11464        },
11465        {
11466          "vuid": "VUID-vkGetImageViewAddressNVX-imageView-parameter",
11467          "text": " <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle"
11468        },
11469        {
11470          "vuid": "VUID-vkGetImageViewAddressNVX-pProperties-parameter",
11471          "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageViewAddressPropertiesNVX\">VkImageViewAddressPropertiesNVX</a> structure"
11472        },
11473        {
11474          "vuid": "VUID-vkGetImageViewAddressNVX-imageView-parent",
11475          "text": " <code>imageView</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11476        }
11477      ]
11478    },
11479    "VkImageViewAddressPropertiesNVX": {
11480      "(VK_NVX_image_view_handle)": [
11481        {
11482          "vuid": "VUID-VkImageViewAddressPropertiesNVX-sType-sType",
11483          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX</code>"
11484        },
11485        {
11486          "vuid": "VUID-VkImageViewAddressPropertiesNVX-pNext-pNext",
11487          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
11488        }
11489      ]
11490    },
11491    "vkGetBufferMemoryRequirements": {
11492      "core": [
11493        {
11494          "vuid": "VUID-vkGetBufferMemoryRequirements-device-parameter",
11495          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11496        },
11497        {
11498          "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parameter",
11499          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
11500        },
11501        {
11502          "vuid": "VUID-vkGetBufferMemoryRequirements-pMemoryRequirements-parameter",
11503          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure"
11504        },
11505        {
11506          "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parent",
11507          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11508        }
11509      ]
11510    },
11511    "vkGetImageMemoryRequirements": {
11512      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11513        {
11514          "vuid": "VUID-vkGetImageMemoryRequirements-image-01588",
11515          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag set"
11516        }
11517      ],
11518      "(VK_ANDROID_external_memory_android_hardware_buffer)": [
11519        {
11520          "vuid": "VUID-vkGetImageMemoryRequirements-image-04004",
11521          "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"
11522        }
11523      ],
11524      "core": [
11525        {
11526          "vuid": "VUID-vkGetImageMemoryRequirements-device-parameter",
11527          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11528        },
11529        {
11530          "vuid": "VUID-vkGetImageMemoryRequirements-image-parameter",
11531          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
11532        },
11533        {
11534          "vuid": "VUID-vkGetImageMemoryRequirements-pMemoryRequirements-parameter",
11535          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure"
11536        },
11537        {
11538          "vuid": "VUID-vkGetImageMemoryRequirements-image-parent",
11539          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11540        }
11541      ]
11542    },
11543    "vkGetBufferMemoryRequirements2": {
11544      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
11545        {
11546          "vuid": "VUID-vkGetBufferMemoryRequirements2-device-parameter",
11547          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11548        },
11549        {
11550          "vuid": "VUID-vkGetBufferMemoryRequirements2-pInfo-parameter",
11551          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferMemoryRequirementsInfo2\">VkBufferMemoryRequirementsInfo2</a> structure"
11552        },
11553        {
11554          "vuid": "VUID-vkGetBufferMemoryRequirements2-pMemoryRequirements-parameter",
11555          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure"
11556        }
11557      ]
11558    },
11559    "VkBufferMemoryRequirementsInfo2": {
11560      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
11561        {
11562          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-sType-sType",
11563          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2</code>"
11564        },
11565        {
11566          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-pNext-pNext",
11567          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
11568        },
11569        {
11570          "vuid": "VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter",
11571          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
11572        }
11573      ]
11574    },
11575    "vkGetImageMemoryRequirements2": {
11576      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
11577        {
11578          "vuid": "VUID-vkGetImageMemoryRequirements2-device-parameter",
11579          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11580        },
11581        {
11582          "vuid": "VUID-vkGetImageMemoryRequirements2-pInfo-parameter",
11583          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
11584        },
11585        {
11586          "vuid": "VUID-vkGetImageMemoryRequirements2-pMemoryRequirements-parameter",
11587          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure"
11588        }
11589      ]
11590    },
11591    "VkImageMemoryRequirementsInfo2": {
11592      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11593        {
11594          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01589",
11595          "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"
11596        },
11597        {
11598          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01590",
11599          "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"
11600        }
11601      ],
11602      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
11603        {
11604          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02279",
11605          "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"
11606        },
11607        {
11608          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02280",
11609          "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"
11610        }
11611      ],
11612      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_image_drm_format_modifier)": [
11613        {
11614          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01591",
11615          "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"
11616        }
11617      ],
11618      "(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)": [
11619        {
11620          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01897",
11621          "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"
11622        }
11623      ],
11624      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
11625        {
11626          "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-sType",
11627          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2</code>"
11628        },
11629        {
11630          "vuid": "VUID-VkImageMemoryRequirementsInfo2-pNext-pNext",
11631          "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>"
11632        },
11633        {
11634          "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-unique",
11635          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
11636        },
11637        {
11638          "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-parameter",
11639          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
11640        }
11641      ]
11642    },
11643    "VkImagePlaneMemoryRequirementsInfo": {
11644      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11645        {
11646          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281",
11647          "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>)"
11648        },
11649        {
11650          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-sType-sType",
11651          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO</code>"
11652        },
11653        {
11654          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter",
11655          "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value"
11656        }
11657      ],
11658      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
11659        {
11660          "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282",
11661          "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>)"
11662        }
11663      ]
11664    },
11665    "VkMemoryRequirements2": {
11666      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
11667        {
11668          "vuid": "VUID-VkMemoryRequirements2-sType-sType",
11669          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2</code>"
11670        },
11671        {
11672          "vuid": "VUID-VkMemoryRequirements2-pNext-pNext",
11673          "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>"
11674        },
11675        {
11676          "vuid": "VUID-VkMemoryRequirements2-sType-unique",
11677          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
11678        }
11679      ]
11680    },
11681    "VkMemoryDedicatedRequirements": {
11682      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
11683        {
11684          "vuid": "VUID-VkMemoryDedicatedRequirements-sType-sType",
11685          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS</code>"
11686        }
11687      ]
11688    },
11689    "vkBindBufferMemory": {
11690      "core": [
11691        {
11692          "vuid": "VUID-vkBindBufferMemory-buffer-01029",
11693          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
11694        },
11695        {
11696          "vuid": "VUID-vkBindBufferMemory-buffer-01030",
11697          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
11698        },
11699        {
11700          "vuid": "VUID-vkBindBufferMemory-memoryOffset-01031",
11701          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
11702        },
11703        {
11704          "vuid": "VUID-vkBindBufferMemory-memory-01035",
11705          "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>"
11706        },
11707        {
11708          "vuid": "VUID-vkBindBufferMemory-memoryOffset-01036",
11709          "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>"
11710        },
11711        {
11712          "vuid": "VUID-vkBindBufferMemory-size-01037",
11713          "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>"
11714        },
11715        {
11716          "vuid": "VUID-vkBindBufferMemory-device-parameter",
11717          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11718        },
11719        {
11720          "vuid": "VUID-vkBindBufferMemory-buffer-parameter",
11721          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
11722        },
11723        {
11724          "vuid": "VUID-vkBindBufferMemory-memory-parameter",
11725          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
11726        },
11727        {
11728          "vuid": "VUID-vkBindBufferMemory-buffer-parent",
11729          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11730        },
11731        {
11732          "vuid": "VUID-vkBindBufferMemory-memory-parent",
11733          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11734        }
11735      ],
11736      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
11737        {
11738          "vuid": "VUID-vkBindBufferMemory-buffer-01444",
11739          "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>"
11740        },
11741        {
11742          "vuid": "VUID-vkBindBufferMemory-memory-01508",
11743          "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"
11744        }
11745      ],
11746      "(VK_VERSION_1_1)": [
11747        {
11748          "vuid": "VUID-vkBindBufferMemory-None-01898",
11749          "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>"
11750        },
11751        {
11752          "vuid": "VUID-vkBindBufferMemory-None-01899",
11753          "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>"
11754        }
11755      ],
11756      "(VK_NV_dedicated_allocation)": [
11757        {
11758          "vuid": "VUID-vkBindBufferMemory-buffer-01038",
11759          "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"
11760        }
11761      ],
11762      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
11763        {
11764          "vuid": "VUID-vkBindBufferMemory-buffer-01039",
11765          "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"
11766        }
11767      ],
11768      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
11769        {
11770          "vuid": "VUID-vkBindBufferMemory-memory-02726",
11771          "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"
11772        }
11773      ],
11774      "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
11775        {
11776          "vuid": "VUID-vkBindBufferMemory-memory-02727",
11777          "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"
11778        }
11779      ],
11780      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
11781        {
11782          "vuid": "VUID-vkBindBufferMemory-memory-02985",
11783          "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"
11784        },
11785        {
11786          "vuid": "VUID-vkBindBufferMemory-memory-02986",
11787          "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"
11788        }
11789      ],
11790      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
11791        {
11792          "vuid": "VUID-vkBindBufferMemory-bufferDeviceAddress-03339",
11793          "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"
11794        }
11795      ]
11796    },
11797    "vkBindBufferMemory2": {
11798      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
11799        {
11800          "vuid": "VUID-vkBindBufferMemory2-device-parameter",
11801          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11802        },
11803        {
11804          "vuid": "VUID-vkBindBufferMemory2-pBindInfos-parameter",
11805          "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"
11806        },
11807        {
11808          "vuid": "VUID-vkBindBufferMemory2-bindInfoCount-arraylength",
11809          "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11810        }
11811      ]
11812    },
11813    "VkBindBufferMemoryInfo": {
11814      "core": [
11815        {
11816          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01029",
11817          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
11818        },
11819        {
11820          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01030",
11821          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
11822        },
11823        {
11824          "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01031",
11825          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
11826        },
11827        {
11828          "vuid": "VUID-VkBindBufferMemoryInfo-memory-01035",
11829          "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>"
11830        },
11831        {
11832          "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01036",
11833          "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>"
11834        },
11835        {
11836          "vuid": "VUID-VkBindBufferMemoryInfo-size-01037",
11837          "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>"
11838        }
11839      ],
11840      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
11841        {
11842          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01444",
11843          "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>"
11844        },
11845        {
11846          "vuid": "VUID-VkBindBufferMemoryInfo-memory-01508",
11847          "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"
11848        }
11849      ],
11850      "(VK_VERSION_1_1)": [
11851        {
11852          "vuid": "VUID-VkBindBufferMemoryInfo-None-01898",
11853          "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>"
11854        },
11855        {
11856          "vuid": "VUID-VkBindBufferMemoryInfo-None-01899",
11857          "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>"
11858        }
11859      ],
11860      "(VK_NV_dedicated_allocation)": [
11861        {
11862          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01038",
11863          "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"
11864        }
11865      ],
11866      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
11867        {
11868          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01039",
11869          "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"
11870        }
11871      ],
11872      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
11873        {
11874          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02726",
11875          "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"
11876        }
11877      ],
11878      "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
11879        {
11880          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02727",
11881          "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"
11882        }
11883      ],
11884      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
11885        {
11886          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02985",
11887          "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"
11888        },
11889        {
11890          "vuid": "VUID-VkBindBufferMemoryInfo-memory-02986",
11891          "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"
11892        }
11893      ],
11894      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
11895        {
11896          "vuid": "VUID-VkBindBufferMemoryInfo-bufferDeviceAddress-03339",
11897          "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"
11898        }
11899      ],
11900      "(VK_VERSION_1_1,VK_KHR_device_group)": [
11901        {
11902          "vuid": "VUID-VkBindBufferMemoryInfo-pNext-01605",
11903          "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"
11904        }
11905      ],
11906      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
11907        {
11908          "vuid": "VUID-VkBindBufferMemoryInfo-sType-sType",
11909          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO</code>"
11910        },
11911        {
11912          "vuid": "VUID-VkBindBufferMemoryInfo-pNext-pNext",
11913          "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>"
11914        },
11915        {
11916          "vuid": "VUID-VkBindBufferMemoryInfo-sType-unique",
11917          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
11918        },
11919        {
11920          "vuid": "VUID-VkBindBufferMemoryInfo-buffer-parameter",
11921          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
11922        },
11923        {
11924          "vuid": "VUID-VkBindBufferMemoryInfo-memory-parameter",
11925          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
11926        },
11927        {
11928          "vuid": "VUID-VkBindBufferMemoryInfo-commonparent",
11929          "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>"
11930        }
11931      ]
11932    },
11933    "VkBindBufferMemoryDeviceGroupInfo": {
11934      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
11935        {
11936          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-deviceIndexCount-01606",
11937          "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
11938        },
11939        {
11940          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-01607",
11941          "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
11942        },
11943        {
11944          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-sType-sType",
11945          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO</code>"
11946        },
11947        {
11948          "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-parameter",
11949          "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"
11950        }
11951      ]
11952    },
11953    "vkBindImageMemory": {
11954      "core": [
11955        {
11956          "vuid": "VUID-vkBindImageMemory-image-01044",
11957          "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
11958        },
11959        {
11960          "vuid": "VUID-vkBindImageMemory-image-01045",
11961          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
11962        },
11963        {
11964          "vuid": "VUID-vkBindImageMemory-memoryOffset-01046",
11965          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
11966        },
11967        {
11968          "vuid": "VUID-vkBindImageMemory-memory-01047",
11969          "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>"
11970        },
11971        {
11972          "vuid": "VUID-vkBindImageMemory-memoryOffset-01048",
11973          "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>"
11974        },
11975        {
11976          "vuid": "VUID-vkBindImageMemory-size-01049",
11977          "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>"
11978        },
11979        {
11980          "vuid": "VUID-vkBindImageMemory-device-parameter",
11981          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
11982        },
11983        {
11984          "vuid": "VUID-vkBindImageMemory-image-parameter",
11985          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
11986        },
11987        {
11988          "vuid": "VUID-vkBindImageMemory-memory-parameter",
11989          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
11990        },
11991        {
11992          "vuid": "VUID-vkBindImageMemory-image-parent",
11993          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11994        },
11995        {
11996          "vuid": "VUID-vkBindImageMemory-memory-parent",
11997          "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11998        }
11999      ],
12000      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
12001        {
12002          "vuid": "VUID-vkBindImageMemory-image-01445",
12003          "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>"
12004        }
12005      ],
12006      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
12007        {
12008          "vuid": "VUID-vkBindImageMemory-memory-01509",
12009          "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"
12010        }
12011      ],
12012      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
12013        {
12014          "vuid": "VUID-vkBindImageMemory-memory-02628",
12015          "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"
12016        },
12017        {
12018          "vuid": "VUID-vkBindImageMemory-memory-02629",
12019          "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"
12020        }
12021      ],
12022      "(VK_VERSION_1_1)": [
12023        {
12024          "vuid": "VUID-vkBindImageMemory-None-01901",
12025          "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>"
12026        },
12027        {
12028          "vuid": "VUID-vkBindImageMemory-None-01902",
12029          "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>"
12030        }
12031      ],
12032      "(VK_NV_dedicated_allocation)": [
12033        {
12034          "vuid": "VUID-vkBindImageMemory-image-01050",
12035          "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"
12036        }
12037      ],
12038      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
12039        {
12040          "vuid": "VUID-vkBindImageMemory-image-01051",
12041          "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"
12042        }
12043      ],
12044      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
12045        {
12046          "vuid": "VUID-vkBindImageMemory-memory-02728",
12047          "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"
12048        }
12049      ],
12050      "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
12051        {
12052          "vuid": "VUID-vkBindImageMemory-memory-02729",
12053          "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"
12054        }
12055      ],
12056      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
12057        {
12058          "vuid": "VUID-vkBindImageMemory-memory-02989",
12059          "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"
12060        },
12061        {
12062          "vuid": "VUID-vkBindImageMemory-memory-02990",
12063          "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"
12064        }
12065      ],
12066      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
12067        {
12068          "vuid": "VUID-vkBindImageMemory-image-01608",
12069          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set"
12070        }
12071      ]
12072    },
12073    "vkBindImageMemory2": {
12074      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
12075        {
12076          "vuid": "VUID-vkBindImageMemory2-pBindInfos-02858",
12077          "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>"
12078        },
12079        {
12080          "vuid": "VUID-vkBindImageMemory2-pBindInfos-04006",
12081          "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> not refer to the same image subresource more than once"
12082        }
12083      ],
12084      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
12085        {
12086          "vuid": "VUID-vkBindImageMemory2-device-parameter",
12087          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12088        },
12089        {
12090          "vuid": "VUID-vkBindImageMemory2-pBindInfos-parameter",
12091          "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"
12092        },
12093        {
12094          "vuid": "VUID-vkBindImageMemory2-bindInfoCount-arraylength",
12095          "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12096        }
12097      ]
12098    },
12099    "VkBindImageMemoryInfo": {
12100      "core": [
12101        {
12102          "vuid": "VUID-VkBindImageMemoryInfo-image-01044",
12103          "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
12104        },
12105        {
12106          "vuid": "VUID-VkBindImageMemoryInfo-image-01045",
12107          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
12108        },
12109        {
12110          "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01046",
12111          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
12112        }
12113      ],
12114      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
12115        {
12116          "vuid": "VUID-VkBindImageMemoryInfo-image-01445",
12117          "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>"
12118        }
12119      ],
12120      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
12121        {
12122          "vuid": "VUID-VkBindImageMemoryInfo-memory-01509",
12123          "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"
12124        }
12125      ],
12126      "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
12127        {
12128          "vuid": "VUID-VkBindImageMemoryInfo-memory-02628",
12129          "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"
12130        },
12131        {
12132          "vuid": "VUID-VkBindImageMemoryInfo-memory-02629",
12133          "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"
12134        }
12135      ],
12136      "(VK_VERSION_1_1)": [
12137        {
12138          "vuid": "VUID-VkBindImageMemoryInfo-None-01901",
12139          "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>"
12140        },
12141        {
12142          "vuid": "VUID-VkBindImageMemoryInfo-None-01902",
12143          "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>"
12144        }
12145      ],
12146      "(VK_NV_dedicated_allocation)": [
12147        {
12148          "vuid": "VUID-VkBindImageMemoryInfo-image-01050",
12149          "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"
12150        }
12151      ],
12152      "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
12153        {
12154          "vuid": "VUID-VkBindImageMemoryInfo-image-01051",
12155          "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"
12156        }
12157      ],
12158      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
12159        {
12160          "vuid": "VUID-VkBindImageMemoryInfo-memory-02728",
12161          "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"
12162        }
12163      ],
12164      "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
12165        {
12166          "vuid": "VUID-VkBindImageMemoryInfo-memory-02729",
12167          "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"
12168        }
12169      ],
12170      "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
12171        {
12172          "vuid": "VUID-VkBindImageMemoryInfo-memory-02989",
12173          "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"
12174        },
12175        {
12176          "vuid": "VUID-VkBindImageMemoryInfo-memory-02990",
12177          "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"
12178        }
12179      ],
12180      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
12181        {
12182          "vuid": "VUID-VkBindImageMemoryInfo-memory-01612",
12183          "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>"
12184        },
12185        {
12186          "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01613",
12187          "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>"
12188        },
12189        {
12190          "vuid": "VUID-VkBindImageMemoryInfo-memory-01614",
12191          "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>"
12192        }
12193      ],
12194      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
12195        {
12196          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01615",
12197          "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>"
12198        },
12199        {
12200          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01616",
12201          "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>"
12202        },
12203        {
12204          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01617",
12205          "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>"
12206        },
12207        {
12208          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01618",
12209          "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"
12210        },
12211        {
12212          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01619",
12213          "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"
12214        },
12215        {
12216          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01620",
12217          "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"
12218        },
12219        {
12220          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01621",
12221          "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"
12222        }
12223      ],
12224      "!(VK_VERSION_1_1+VK_KHR_swapchain)+!(VK_KHR_device_group+VK_KHR_swapchain)": [
12225        {
12226          "vuid": "VUID-VkBindImageMemoryInfo-memory-01625",
12227          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
12228        }
12229      ],
12230      "(VK_VERSION_1_1,VK_KHR_device_group)": [
12231        {
12232          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01626",
12233          "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"
12234        },
12235        {
12236          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01627",
12237          "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"
12238        },
12239        {
12240          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01628",
12241          "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>"
12242        },
12243        {
12244          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01629",
12245          "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"
12246        }
12247      ],
12248      "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
12249        {
12250          "vuid": "VUID-VkBindImageMemoryInfo-image-01630",
12251          "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"
12252        },
12253        {
12254          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01631",
12255          "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>"
12256        },
12257        {
12258          "vuid": "VUID-VkBindImageMemoryInfo-pNext-01632",
12259          "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"
12260        }
12261      ],
12262      "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
12263        {
12264          "vuid": "VUID-VkBindImageMemoryInfo-sType-sType",
12265          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO</code>"
12266        },
12267        {
12268          "vuid": "VUID-VkBindImageMemoryInfo-pNext-pNext",
12269          "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>"
12270        },
12271        {
12272          "vuid": "VUID-VkBindImageMemoryInfo-sType-unique",
12273          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
12274        },
12275        {
12276          "vuid": "VUID-VkBindImageMemoryInfo-image-parameter",
12277          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
12278        },
12279        {
12280          "vuid": "VUID-VkBindImageMemoryInfo-commonparent",
12281          "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>"
12282        }
12283      ]
12284    },
12285    "VkBindImageMemoryDeviceGroupInfo": {
12286      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
12287        {
12288          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01633",
12289          "text": " At least one of <code>deviceIndexCount</code> and <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> be zero"
12290        },
12291        {
12292          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01634",
12293          "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
12294        },
12295        {
12296          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-01635",
12297          "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
12298        },
12299        {
12300          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-splitInstanceBindRegionCount-01636",
12301          "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"
12302        },
12303        {
12304          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-01637",
12305          "text": " Elements of <code>pSplitInstanceBindRegions</code> that correspond to the same instance of an image <strong class=\"purple\">must</strong> not overlap"
12306        },
12307        {
12308          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01638",
12309          "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"
12310        },
12311        {
12312          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01639",
12313          "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"
12314        },
12315        {
12316          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01640",
12317          "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"
12318        },
12319        {
12320          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01641",
12321          "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"
12322        },
12323        {
12324          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-sType-sType",
12325          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO</code>"
12326        },
12327        {
12328          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter",
12329          "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"
12330        },
12331        {
12332          "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter",
12333          "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"
12334        }
12335      ]
12336    },
12337    "VkBindImageMemorySwapchainInfoKHR": {
12338      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
12339        {
12340          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644",
12341          "text": " <code>imageIndex</code> <strong class=\"purple\">must</strong> be less than the number of images in <code>swapchain</code>"
12342        },
12343        {
12344          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType",
12345          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR</code>"
12346        },
12347        {
12348          "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter",
12349          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
12350        }
12351      ]
12352    },
12353    "VkBindImagePlaneMemoryInfo": {
12354      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
12355        {
12356          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283",
12357          "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>)"
12358        },
12359        {
12360          "vuid": "VUID-VkBindImagePlaneMemoryInfo-sType-sType",
12361          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO</code>"
12362        },
12363        {
12364          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter",
12365          "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value"
12366        }
12367      ],
12368      "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
12369        {
12370          "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284",
12371          "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>)"
12372        }
12373      ]
12374    },
12375    "vkCreateAccelerationStructureNV": {
12376      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12377        {
12378          "vuid": "VUID-vkCreateAccelerationStructureNV-device-parameter",
12379          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12380        },
12381        {
12382          "vuid": "VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter",
12383          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureCreateInfoNV\">VkAccelerationStructureCreateInfoNV</a> structure"
12384        },
12385        {
12386          "vuid": "VUID-vkCreateAccelerationStructureNV-pAllocator-parameter",
12387          "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"
12388        },
12389        {
12390          "vuid": "VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter",
12391          "text": " <code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
12392        }
12393      ]
12394    },
12395    "VkAccelerationStructureCreateInfoNV": {
12396      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12397        {
12398          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421",
12399          "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>"
12400        },
12401        {
12402          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-sType-sType",
12403          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV</code>"
12404        },
12405        {
12406          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext",
12407          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12408        },
12409        {
12410          "vuid": "VUID-VkAccelerationStructureCreateInfoNV-info-parameter",
12411          "text": " <code>info</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> structure"
12412        }
12413      ]
12414    },
12415    "VkAccelerationStructureInfoNV": {
12416      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12417        {
12418          "vuid": "VUID-VkAccelerationStructureInfoNV-geometryCount-02422",
12419          "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>"
12420        },
12421        {
12422          "vuid": "VUID-VkAccelerationStructureInfoNV-instanceCount-02423",
12423          "text": " <code>instanceCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxInstanceCount</code>"
12424        },
12425        {
12426          "vuid": "VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424",
12427          "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>"
12428        },
12429        {
12430          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02425",
12431          "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>"
12432        },
12433        {
12434          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02426",
12435          "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>"
12436        },
12437        {
12438          "vuid": "VUID-VkAccelerationStructureInfoNV-type-02786",
12439          "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"
12440        },
12441        {
12442          "vuid": "VUID-VkAccelerationStructureInfoNV-flags-02592",
12443          "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"
12444        },
12445        {
12446          "vuid": "VUID-VkAccelerationStructureInfoNV-scratch-02781",
12447          "text": " <code>scratch</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag"
12448        },
12449        {
12450          "vuid": "VUID-VkAccelerationStructureInfoNV-instanceData-02782",
12451          "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"
12452        },
12453        {
12454          "vuid": "VUID-VkAccelerationStructureInfoNV-sType-sType",
12455          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV</code>"
12456        },
12457        {
12458          "vuid": "VUID-VkAccelerationStructureInfoNV-pNext-pNext",
12459          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12460        },
12461        {
12462          "vuid": "VUID-VkAccelerationStructureInfoNV-type-parameter",
12463          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeNV\">VkAccelerationStructureTypeNV</a> value"
12464        },
12465        {
12466          "vuid": "VUID-VkAccelerationStructureInfoNV-flags-parameter",
12467          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsNV\">VkBuildAccelerationStructureFlagBitsNV</a> values"
12468        },
12469        {
12470          "vuid": "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter",
12471          "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"
12472        }
12473      ]
12474    },
12475    "vkCreateAccelerationStructureKHR": {
12476      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
12477        {
12478          "vuid": "VUID-vkCreateAccelerationStructureKHR-rayTracing-03487",
12479          "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"
12480        },
12481        {
12482          "vuid": "VUID-vkCreateAccelerationStructureKHR-deviceAddress-03488",
12483          "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"
12484        },
12485        {
12486          "vuid": "VUID-vkCreateAccelerationStructureKHR-device-03489",
12487          "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"
12488        },
12489        {
12490          "vuid": "VUID-vkCreateAccelerationStructureKHR-device-parameter",
12491          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12492        },
12493        {
12494          "vuid": "VUID-vkCreateAccelerationStructureKHR-pCreateInfo-parameter",
12495          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a> structure"
12496        },
12497        {
12498          "vuid": "VUID-vkCreateAccelerationStructureKHR-pAllocator-parameter",
12499          "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"
12500        },
12501        {
12502          "vuid": "VUID-vkCreateAccelerationStructureKHR-pAccelerationStructure-parameter",
12503          "text": " <code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
12504        }
12505      ]
12506    },
12507    "VkAccelerationStructureCreateInfoKHR": {
12508      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
12509        {
12510          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-compactedSize-03490",
12511          "text": " If <code>compactedSize</code> is not <code>0</code> then <code>maxGeometryCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
12512        },
12513        {
12514          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-compactedSize-02993",
12515          "text": " If <code>compactedSize</code> is <code>0</code> then <code>maxGeometryCount</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
12516        },
12517        {
12518          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03491",
12519          "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>"
12520        },
12521        {
12522          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03492",
12523          "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>"
12524        },
12525        {
12526          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-maxPrimitiveCount-03493",
12527          "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>"
12528        },
12529        {
12530          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-maxPrimitiveCount-03494",
12531          "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>"
12532        },
12533        {
12534          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03495",
12535          "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>"
12536        },
12537        {
12538          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03496",
12539          "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>"
12540        },
12541        {
12542          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03497",
12543          "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>"
12544        },
12545        {
12546          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03498",
12547          "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"
12548        },
12549        {
12550          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-flags-03499",
12551          "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"
12552        },
12553        {
12554          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-03500",
12555          "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>"
12556        },
12557        {
12558          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-sType-sType",
12559          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR</code>"
12560        },
12561        {
12562          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-pNext-pNext",
12563          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12564        },
12565        {
12566          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-parameter",
12567          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeKHR\">VkAccelerationStructureTypeKHR</a> value"
12568        },
12569        {
12570          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-flags-parameter",
12571          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsKHR\">VkBuildAccelerationStructureFlagBitsKHR</a> values"
12572        },
12573        {
12574          "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-pGeometryInfos-parameter",
12575          "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"
12576        }
12577      ]
12578    },
12579    "VkAccelerationStructureCreateGeometryTypeInfoKHR": {
12580      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
12581        {
12582          "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-geometryType-03501",
12583          "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>"
12584        },
12585        {
12586          "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-geometryType-03502",
12587          "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>"
12588        },
12589        {
12590          "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-sType-sType",
12591          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR</code>"
12592        },
12593        {
12594          "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-pNext-pNext",
12595          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12596        },
12597        {
12598          "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-geometryType-parameter",
12599          "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeKHR\">VkGeometryTypeKHR</a> value"
12600        },
12601        {
12602          "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-indexType-parameter",
12603          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
12604        },
12605        {
12606          "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-vertexFormat-parameter",
12607          "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"
12608        }
12609      ]
12610    },
12611    "VkGeometryNV": {
12612      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12613        {
12614          "vuid": "VUID-VkGeometryNV-geometryType-03503",
12615          "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>"
12616        },
12617        {
12618          "vuid": "VUID-VkGeometryNV-sType-sType",
12619          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_NV</code>"
12620        },
12621        {
12622          "vuid": "VUID-VkGeometryNV-pNext-pNext",
12623          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12624        },
12625        {
12626          "vuid": "VUID-VkGeometryNV-geometryType-parameter",
12627          "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeKHR\">VkGeometryTypeKHR</a> value"
12628        },
12629        {
12630          "vuid": "VUID-VkGeometryNV-geometry-parameter",
12631          "text": " <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryDataNV\">VkGeometryDataNV</a> structure"
12632        },
12633        {
12634          "vuid": "VUID-VkGeometryNV-flags-parameter",
12635          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsKHR\">VkGeometryFlagBitsKHR</a> values"
12636        }
12637      ]
12638    },
12639    "VkGeometryDataNV": {
12640      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12641        {
12642          "vuid": "VUID-VkGeometryDataNV-triangles-parameter",
12643          "text": " <code>triangles</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTrianglesNV\">VkGeometryTrianglesNV</a> structure"
12644        },
12645        {
12646          "vuid": "VUID-VkGeometryDataNV-aabbs-parameter",
12647          "text": " <code>aabbs</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryAABBNV\">VkGeometryAABBNV</a> structure"
12648        }
12649      ]
12650    },
12651    "VkGeometryTrianglesNV": {
12652      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12653        {
12654          "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02428",
12655          "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>vertexData</code>"
12656        },
12657        {
12658          "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02429",
12659          "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the component size of <code>vertexFormat</code>"
12660        },
12661        {
12662          "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-02430",
12663          "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>"
12664        },
12665        {
12666          "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02431",
12667          "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>indexData</code>"
12668        },
12669        {
12670          "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02432",
12671          "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <code>indexType</code>"
12672        },
12673        {
12674          "vuid": "VUID-VkGeometryTrianglesNV-indexType-02433",
12675          "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>"
12676        },
12677        {
12678          "vuid": "VUID-VkGeometryTrianglesNV-indexData-02434",
12679          "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>"
12680        },
12681        {
12682          "vuid": "VUID-VkGeometryTrianglesNV-indexData-02435",
12683          "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>"
12684        },
12685        {
12686          "vuid": "VUID-VkGeometryTrianglesNV-indexCount-02436",
12687          "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>"
12688        },
12689        {
12690          "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02437",
12691          "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>transformData</code>"
12692        },
12693        {
12694          "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02438",
12695          "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>16</code>"
12696        },
12697        {
12698          "vuid": "VUID-VkGeometryTrianglesNV-sType-sType",
12699          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV</code>"
12700        },
12701        {
12702          "vuid": "VUID-VkGeometryTrianglesNV-pNext-pNext",
12703          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12704        },
12705        {
12706          "vuid": "VUID-VkGeometryTrianglesNV-vertexData-parameter",
12707          "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"
12708        },
12709        {
12710          "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-parameter",
12711          "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
12712        },
12713        {
12714          "vuid": "VUID-VkGeometryTrianglesNV-indexData-parameter",
12715          "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"
12716        },
12717        {
12718          "vuid": "VUID-VkGeometryTrianglesNV-indexType-parameter",
12719          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
12720        },
12721        {
12722          "vuid": "VUID-VkGeometryTrianglesNV-transformData-parameter",
12723          "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"
12724        },
12725        {
12726          "vuid": "VUID-VkGeometryTrianglesNV-commonparent",
12727          "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>"
12728        }
12729      ]
12730    },
12731    "VkGeometryAABBNV": {
12732      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12733        {
12734          "vuid": "VUID-VkGeometryAABBNV-offset-02439",
12735          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>aabbData</code>"
12736        },
12737        {
12738          "vuid": "VUID-VkGeometryAABBNV-offset-02440",
12739          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
12740        },
12741        {
12742          "vuid": "VUID-VkGeometryAABBNV-stride-02441",
12743          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
12744        },
12745        {
12746          "vuid": "VUID-VkGeometryAABBNV-sType-sType",
12747          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV</code>"
12748        },
12749        {
12750          "vuid": "VUID-VkGeometryAABBNV-pNext-pNext",
12751          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12752        },
12753        {
12754          "vuid": "VUID-VkGeometryAABBNV-aabbData-parameter",
12755          "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"
12756        }
12757      ]
12758    },
12759    "vkDestroyAccelerationStructureKHR": {
12760      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
12761        {
12762          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02442",
12763          "text": " All submitted commands that refer to <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have completed execution"
12764        },
12765        {
12766          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02443",
12767          "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"
12768        },
12769        {
12770          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02444",
12771          "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>"
12772        },
12773        {
12774          "vuid": "VUID-vkDestroyAccelerationStructureKHR-device-parameter",
12775          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12776        },
12777        {
12778          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parameter",
12779          "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"
12780        },
12781        {
12782          "vuid": "VUID-vkDestroyAccelerationStructureKHR-pAllocator-parameter",
12783          "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"
12784        },
12785        {
12786          "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parent",
12787          "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>"
12788        }
12789      ]
12790    },
12791    "vkGetAccelerationStructureMemoryRequirementsNV": {
12792      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12793        {
12794          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter",
12795          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12796        },
12797        {
12798          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter",
12799          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a> structure"
12800        },
12801        {
12802          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pMemoryRequirements-parameter",
12803          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2KHR\">VkMemoryRequirements2KHR</a> structure"
12804        }
12805      ]
12806    },
12807    "VkAccelerationStructureMemoryRequirementsInfoNV": {
12808      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12809        {
12810          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-sType-sType",
12811          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV</code>"
12812        },
12813        {
12814          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-pNext-pNext",
12815          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12816        },
12817        {
12818          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter",
12819          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureMemoryRequirementsTypeNV\">VkAccelerationStructureMemoryRequirementsTypeNV</a> value"
12820        },
12821        {
12822          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter",
12823          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle"
12824        }
12825      ]
12826    },
12827    "vkGetAccelerationStructureMemoryRequirementsKHR": {
12828      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
12829        {
12830          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsKHR-device-parameter",
12831          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12832        },
12833        {
12834          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsKHR-pInfo-parameter",
12835          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureMemoryRequirementsInfoKHR\">VkAccelerationStructureMemoryRequirementsInfoKHR</a> structure"
12836        },
12837        {
12838          "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsKHR-pMemoryRequirements-parameter",
12839          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure"
12840        }
12841      ]
12842    },
12843    "VkAccelerationStructureMemoryRequirementsInfoKHR": {
12844      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
12845        {
12846          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-sType-sType",
12847          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR</code>"
12848        },
12849        {
12850          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-pNext-pNext",
12851          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12852        },
12853        {
12854          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-type-parameter",
12855          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureMemoryRequirementsTypeKHR\">VkAccelerationStructureMemoryRequirementsTypeKHR</a> value"
12856        },
12857        {
12858          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-buildType-parameter",
12859          "text": " <code>buildType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureBuildTypeKHR\">VkAccelerationStructureBuildTypeKHR</a> value"
12860        },
12861        {
12862          "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-accelerationStructure-parameter",
12863          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
12864        }
12865      ]
12866    },
12867    "vkBindAccelerationStructureMemoryKHR": {
12868      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
12869        {
12870          "vuid": "VUID-vkBindAccelerationStructureMemoryKHR-device-parameter",
12871          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12872        },
12873        {
12874          "vuid": "VUID-vkBindAccelerationStructureMemoryKHR-pBindInfos-parameter",
12875          "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"
12876        },
12877        {
12878          "vuid": "VUID-vkBindAccelerationStructureMemoryKHR-bindInfoCount-arraylength",
12879          "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12880        }
12881      ]
12882    },
12883    "VkBindAccelerationStructureMemoryInfoKHR": {
12884      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
12885        {
12886          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-accelerationStructure-02450",
12887          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
12888        },
12889        {
12890          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-memoryOffset-02451",
12891          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
12892        },
12893        {
12894          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-memory-02593",
12895          "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>"
12896        },
12897        {
12898          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-memoryOffset-02594",
12899          "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>"
12900        },
12901        {
12902          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-size-02595",
12903          "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>"
12904        },
12905        {
12906          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-sType-sType",
12907          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR</code>"
12908        },
12909        {
12910          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-pNext-pNext",
12911          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12912        },
12913        {
12914          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-accelerationStructure-parameter",
12915          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
12916        },
12917        {
12918          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-memory-parameter",
12919          "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
12920        },
12921        {
12922          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-pDeviceIndices-parameter",
12923          "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"
12924        },
12925        {
12926          "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-commonparent",
12927          "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>"
12928        }
12929      ]
12930    },
12931    "vkGetAccelerationStructureHandleNV": {
12932      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
12933        {
12934          "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-02240",
12935          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be large enough to contain the result of the query, as described above"
12936        },
12937        {
12938          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-02787",
12939          "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>"
12940        },
12941        {
12942          "vuid": "VUID-vkGetAccelerationStructureHandleNV-device-parameter",
12943          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12944        },
12945        {
12946          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter",
12947          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
12948        },
12949        {
12950          "vuid": "VUID-vkGetAccelerationStructureHandleNV-pData-parameter",
12951          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
12952        },
12953        {
12954          "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength",
12955          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12956        },
12957        {
12958          "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent",
12959          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
12960        }
12961      ]
12962    },
12963    "vkGetAccelerationStructureDeviceAddressKHR": {
12964      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
12965        {
12966          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-device-03504",
12967          "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"
12968        },
12969        {
12970          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter",
12971          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
12972        },
12973        {
12974          "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-parameter",
12975          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureDeviceAddressInfoKHR\">VkAccelerationStructureDeviceAddressInfoKHR</a> structure"
12976        }
12977      ]
12978    },
12979    "VkAccelerationStructureDeviceAddressInfoKHR": {
12980      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
12981        {
12982          "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-sType-sType",
12983          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR</code>"
12984        },
12985        {
12986          "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-pNext-pNext",
12987          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12988        },
12989        {
12990          "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-accelerationStructure-parameter",
12991          "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
12992        }
12993      ]
12994    },
12995    "vkCreateSampler": {
12996      "core": [
12997        {
12998          "vuid": "VUID-vkCreateSampler-maxSamplerAllocationCount-04110",
12999          "text": " There <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxSamplerAllocationCount</code> VkSampler objects currently created on the device."
13000        },
13001        {
13002          "vuid": "VUID-vkCreateSampler-device-parameter",
13003          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13004        },
13005        {
13006          "vuid": "VUID-vkCreateSampler-pCreateInfo-parameter",
13007          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSamplerCreateInfo\">VkSamplerCreateInfo</a> structure"
13008        },
13009        {
13010          "vuid": "VUID-vkCreateSampler-pAllocator-parameter",
13011          "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"
13012        },
13013        {
13014          "vuid": "VUID-vkCreateSampler-pSampler-parameter",
13015          "text": " <code>pSampler</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSampler\">VkSampler</a> handle"
13016        }
13017      ]
13018    },
13019    "VkSamplerCreateInfo": {
13020      "core": [
13021        {
13022          "vuid": "VUID-VkSamplerCreateInfo-mipLodBias-01069",
13023          "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>"
13024        },
13025        {
13026          "vuid": "VUID-VkSamplerCreateInfo-maxLod-01973",
13027          "text": " <code>maxLod</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>minLod</code>"
13028        },
13029        {
13030          "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01070",
13031          "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>"
13032        },
13033        {
13034          "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01071",
13035          "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"
13036        },
13037        {
13038          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01072",
13039          "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal"
13040        },
13041        {
13042          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01073",
13043          "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>"
13044        },
13045        {
13046          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01074",
13047          "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minLod</code> and <code>maxLod</code> <strong class=\"purple\">must</strong> be zero"
13048        },
13049        {
13050          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01075",
13051          "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>"
13052        },
13053        {
13054          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01076",
13055          "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
13056        },
13057        {
13058          "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01077",
13059          "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>compareEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
13060        },
13061        {
13062          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01078",
13063          "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"
13064        },
13065        {
13066          "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01080",
13067          "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"
13068        },
13069        {
13070          "vuid": "VUID-VkSamplerCreateInfo-sType-sType",
13071          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO</code>"
13072        },
13073        {
13074          "vuid": "VUID-VkSamplerCreateInfo-pNext-pNext",
13075          "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>"
13076        },
13077        {
13078          "vuid": "VUID-VkSamplerCreateInfo-sType-unique",
13079          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
13080        },
13081        {
13082          "vuid": "VUID-VkSamplerCreateInfo-flags-parameter",
13083          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSamplerCreateFlagBits\">VkSamplerCreateFlagBits</a> values"
13084        },
13085        {
13086          "vuid": "VUID-VkSamplerCreateInfo-magFilter-parameter",
13087          "text": " <code>magFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
13088        },
13089        {
13090          "vuid": "VUID-VkSamplerCreateInfo-minFilter-parameter",
13091          "text": " <code>minFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
13092        },
13093        {
13094          "vuid": "VUID-VkSamplerCreateInfo-mipmapMode-parameter",
13095          "text": " <code>mipmapMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerMipmapMode\">VkSamplerMipmapMode</a> value"
13096        },
13097        {
13098          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-parameter",
13099          "text": " <code>addressModeU</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
13100        },
13101        {
13102          "vuid": "VUID-VkSamplerCreateInfo-addressModeV-parameter",
13103          "text": " <code>addressModeV</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
13104        },
13105        {
13106          "vuid": "VUID-VkSamplerCreateInfo-addressModeW-parameter",
13107          "text": " <code>addressModeW</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
13108        }
13109      ],
13110      "(VK_KHR_portability_subset)": [
13111        {
13112          "vuid": "VUID-VkSamplerCreateInfo-samplerMipLodBias-04467",
13113          "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>samplerMipLodBias</code> is <code>VK_FALSE</code>, <code>mipLodBias</code> <strong class=\"purple\">must</strong> be zero."
13114        }
13115      ],
13116      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
13117        {
13118          "vuid": "VUID-VkSamplerCreateInfo-minFilter-01645",
13119          "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>"
13120        },
13121        {
13122          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01646",
13123          "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>"
13124        }
13125      ],
13126      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [
13127        {
13128          "vuid": "VUID-VkSamplerCreateInfo-None-01647",
13129          "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"
13130        }
13131      ],
13132      "(VK_VERSION_1_2,VK_KHR_sampler_mirror_clamp_to_edge)": [
13133        {
13134          "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01079",
13135          "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>"
13136        }
13137      ],
13138      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
13139        {
13140          "vuid": "VUID-VkSamplerCreateInfo-magFilter-01081",
13141          "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>"
13142        }
13143      ],
13144      "(VK_IMG_filter_cubic+VK_EXT_sampler_filter_minmax)+!(VK_EXT_filter_cubic)": [
13145        {
13146          "vuid": "VUID-VkSamplerCreateInfo-magFilter-01422",
13147          "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>"
13148        }
13149      ],
13150      "(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [
13151        {
13152          "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01423",
13153          "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>"
13154        }
13155      ],
13156      "(VK_EXT_fragment_density_map)": [
13157        {
13158          "vuid": "VUID-VkSamplerCreateInfo-flags-02574",
13159          "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"
13160        },
13161        {
13162          "vuid": "VUID-VkSamplerCreateInfo-flags-02575",
13163          "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>"
13164        },
13165        {
13166          "vuid": "VUID-VkSamplerCreateInfo-flags-02576",
13167          "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"
13168        },
13169        {
13170          "vuid": "VUID-VkSamplerCreateInfo-flags-02577",
13171          "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>"
13172        },
13173        {
13174          "vuid": "VUID-VkSamplerCreateInfo-flags-02578",
13175          "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>"
13176        },
13177        {
13178          "vuid": "VUID-VkSamplerCreateInfo-flags-02579",
13179          "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>"
13180        },
13181        {
13182          "vuid": "VUID-VkSamplerCreateInfo-flags-02580",
13183          "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>"
13184        }
13185      ],
13186      "(VK_EXT_custom_border_color)": [
13187        {
13188          "vuid": "VUID-VkSamplerCreateInfo-borderColor-04011",
13189          "text": " If <code>borderColor</code> is 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"
13190        },
13191        {
13192          "vuid": "VUID-VkSamplerCreateInfo-customBorderColors-04085",
13193          "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 <code>VK_BORDER_COLOR_FLOAT_CUSTOM_EXT</code> or <code>VK_BORDER_COLOR_INT_CUSTOM_EXT</code>"
13194        },
13195        {
13196          "vuid": "VUID-VkSamplerCreateInfo-borderColor-04442",
13197          "text": " If <code>borderColor</code> is one of <code>VK_BORDER_COLOR_FLOAT_CUSTOM_EXT</code> or <code>VK_BORDER_COLOR_INT_CUSTOM_EXT</code>, and <a href=\"#VkSamplerCustomBorderColorCreateInfoEXT\">VkSamplerCustomBorderColorCreateInfoEXT</a>::<code>format</code> is not <code>VK_FORMAT_UNDEFINED</code>, <a href=\"#VkSamplerCustomBorderColorCreateInfoEXT\">VkSamplerCustomBorderColorCreateInfoEXT</a>::<code>customBorderColor</code> <strong class=\"purple\">must</strong> be within the range of values representable in <code>format</code>."
13198        },
13199        {
13200          "vuid": "VUID-VkSamplerCreateInfo-None-04012",
13201          "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"
13202        }
13203      ]
13204    },
13205    "VkSamplerReductionModeCreateInfo": {
13206      "(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [
13207        {
13208          "vuid": "VUID-VkSamplerReductionModeCreateInfo-sType-sType",
13209          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO</code>"
13210        },
13211        {
13212          "vuid": "VUID-VkSamplerReductionModeCreateInfo-reductionMode-parameter",
13213          "text": " <code>reductionMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerReductionMode\">VkSamplerReductionMode</a> value"
13214        }
13215      ]
13216    },
13217    "vkDestroySampler": {
13218      "core": [
13219        {
13220          "vuid": "VUID-vkDestroySampler-sampler-01082",
13221          "text": " All submitted commands that refer to <code>sampler</code> <strong class=\"purple\">must</strong> have completed execution"
13222        },
13223        {
13224          "vuid": "VUID-vkDestroySampler-sampler-01083",
13225          "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"
13226        },
13227        {
13228          "vuid": "VUID-vkDestroySampler-sampler-01084",
13229          "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>"
13230        },
13231        {
13232          "vuid": "VUID-vkDestroySampler-device-parameter",
13233          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13234        },
13235        {
13236          "vuid": "VUID-vkDestroySampler-sampler-parameter",
13237          "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"
13238        },
13239        {
13240          "vuid": "VUID-vkDestroySampler-pAllocator-parameter",
13241          "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"
13242        },
13243        {
13244          "vuid": "VUID-vkDestroySampler-sampler-parent",
13245          "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>"
13246        }
13247      ]
13248    },
13249    "VkSamplerYcbcrConversionInfo": {
13250      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
13251        {
13252          "vuid": "VUID-VkSamplerYcbcrConversionInfo-sType-sType",
13253          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO</code>"
13254        },
13255        {
13256          "vuid": "VUID-VkSamplerYcbcrConversionInfo-conversion-parameter",
13257          "text": " <code>conversion</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrConversion\">VkSamplerYcbcrConversion</a> handle"
13258        }
13259      ]
13260    },
13261    "vkCreateSamplerYcbcrConversion": {
13262      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
13263        {
13264          "vuid": "VUID-vkCreateSamplerYcbcrConversion-None-01648",
13265          "text": " The <a href=\"#features-samplerYcbcrConversion\">sampler {YCbCr} conversion feature</a> <strong class=\"purple\">must</strong> be enabled"
13266        },
13267        {
13268          "vuid": "VUID-vkCreateSamplerYcbcrConversion-device-parameter",
13269          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13270        },
13271        {
13272          "vuid": "VUID-vkCreateSamplerYcbcrConversion-pCreateInfo-parameter",
13273          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSamplerYcbcrConversionCreateInfo\">VkSamplerYcbcrConversionCreateInfo</a> structure"
13274        },
13275        {
13276          "vuid": "VUID-vkCreateSamplerYcbcrConversion-pAllocator-parameter",
13277          "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"
13278        },
13279        {
13280          "vuid": "VUID-vkCreateSamplerYcbcrConversion-pYcbcrConversion-parameter",
13281          "text": " <code>pYcbcrConversion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSamplerYcbcrConversion\">VkSamplerYcbcrConversion</a> handle"
13282        }
13283      ]
13284    },
13285    "VkSamplerYcbcrConversionCreateInfo": {
13286      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
13287        {
13288          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-04060",
13289          "text": " <code>format</code> <strong class=\"purple\">must</strong> represent unsigned normalized values (i.e. the format must be a <code>UNORM</code> format)"
13290        }
13291      ],
13292      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
13293        {
13294          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01904",
13295          "text": " If an external format conversion is being created, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>"
13296        },
13297        {
13298          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-04061",
13299          "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)"
13300        }
13301      ],
13302      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
13303        {
13304          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01650",
13305          "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>"
13306        },
13307        {
13308          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01651",
13309          "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> if the corresponding channels are <a href=\"#textures-chroma-reconstruction\">downsampled</a>"
13310        },
13311        {
13312          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652",
13313          "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> if the corresponding channels are <a href=\"#textures-chroma-reconstruction\">downsampled</a>"
13314        },
13315        {
13316          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02581",
13317          "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>"
13318        },
13319        {
13320          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02582",
13321          "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>"
13322        },
13323        {
13324          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02583",
13325          "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>"
13326        },
13327        {
13328          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02584",
13329          "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>"
13330        },
13331        {
13332          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02585",
13333          "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"
13334        },
13335        {
13336          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-01655",
13337          "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>"
13338        },
13339        {
13340          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-02748",
13341          "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"
13342        },
13343        {
13344          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656",
13345          "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>"
13346        },
13347        {
13348          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657",
13349          "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>"
13350        },
13351        {
13352          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-sType-sType",
13353          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO</code>"
13354        },
13355        {
13356          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-pNext-pNext",
13357          "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>"
13358        },
13359        {
13360          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-sType-unique",
13361          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
13362        },
13363        {
13364          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter",
13365          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
13366        },
13367        {
13368          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-parameter",
13369          "text": " <code>ycbcrModel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrModelConversion\">VkSamplerYcbcrModelConversion</a> value"
13370        },
13371        {
13372          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-parameter",
13373          "text": " <code>ycbcrRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrRange\">VkSamplerYcbcrRange</a> value"
13374        },
13375        {
13376          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-parameter",
13377          "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentMapping\">VkComponentMapping</a> structure"
13378        },
13379        {
13380          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-parameter",
13381          "text": " <code>xChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value"
13382        },
13383        {
13384          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-yChromaOffset-parameter",
13385          "text": " <code>yChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value"
13386        },
13387        {
13388          "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-parameter",
13389          "text": " <code>chromaFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
13390        }
13391      ]
13392    },
13393    "vkDestroySamplerYcbcrConversion": {
13394      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
13395        {
13396          "vuid": "VUID-vkDestroySamplerYcbcrConversion-device-parameter",
13397          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13398        },
13399        {
13400          "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parameter",
13401          "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"
13402        },
13403        {
13404          "vuid": "VUID-vkDestroySamplerYcbcrConversion-pAllocator-parameter",
13405          "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"
13406        },
13407        {
13408          "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parent",
13409          "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>"
13410        }
13411      ]
13412    },
13413    "VkSamplerCustomBorderColorCreateInfoEXT": {
13414      "(VK_EXT_custom_border_color)": [
13415        {
13416          "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04013",
13417          "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"
13418        },
13419        {
13420          "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04014",
13421          "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>"
13422        },
13423        {
13424          "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04015",
13425          "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>"
13426        },
13427        {
13428          "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-sType-sType",
13429          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT</code>"
13430        },
13431        {
13432          "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-parameter",
13433          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
13434        }
13435      ]
13436    },
13437    "vkCreateDescriptorSetLayout": {
13438      "core": [
13439        {
13440          "vuid": "VUID-vkCreateDescriptorSetLayout-device-parameter",
13441          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13442        },
13443        {
13444          "vuid": "VUID-vkCreateDescriptorSetLayout-pCreateInfo-parameter",
13445          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a> structure"
13446        },
13447        {
13448          "vuid": "VUID-vkCreateDescriptorSetLayout-pAllocator-parameter",
13449          "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"
13450        },
13451        {
13452          "vuid": "VUID-vkCreateDescriptorSetLayout-pSetLayout-parameter",
13453          "text": " <code>pSetLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handle"
13454        }
13455      ]
13456    },
13457    "VkDescriptorSetLayoutCreateInfo": {
13458      "core": [
13459        {
13460          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-binding-00279",
13461          "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"
13462        },
13463        {
13464          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-sType-sType",
13465          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO</code>"
13466        },
13467        {
13468          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext",
13469          "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>"
13470        },
13471        {
13472          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-sType-unique",
13473          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
13474        },
13475        {
13476          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter",
13477          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorSetLayoutCreateFlagBits\">VkDescriptorSetLayoutCreateFlagBits</a> values"
13478        },
13479        {
13480          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter",
13481          "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"
13482        }
13483      ],
13484      "(VK_KHR_push_descriptor)": [
13485        {
13486          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00280",
13487          "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>"
13488        },
13489        {
13490          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00281",
13491          "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>"
13492        }
13493      ],
13494      "(VK_KHR_push_descriptor)+(VK_EXT_inline_uniform_block)": [
13495        {
13496          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-02208",
13497          "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>"
13498        }
13499      ],
13500      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
13501        {
13502          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-03000",
13503          "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>"
13504        },
13505        {
13506          "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001",
13507          "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>"
13508        }
13509      ]
13510    },
13511    "VkDescriptorSetLayoutBinding": {
13512      "core": [
13513        {
13514          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-00282",
13515          "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"
13516        },
13517        {
13518          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283",
13519          "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"
13520        },
13521        {
13522          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-01510",
13523          "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>"
13524        },
13525        {
13526          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter",
13527          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
13528        }
13529      ],
13530      "(VK_EXT_inline_uniform_block)": [
13531        {
13532          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02209",
13533          "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>"
13534        },
13535        {
13536          "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02210",
13537          "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>"
13538        }
13539      ],
13540      "(VK_EXT_custom_border_color)": [
13541        {
13542          "vuid": "VUID-VkDescriptorSetLayoutBinding-pImmutableSamplers-04009",
13543          "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>"
13544        }
13545      ]
13546    },
13547    "VkDescriptorSetLayoutBindingFlagsCreateInfo": {
13548      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
13549        {
13550          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-bindingCount-03002",
13551          "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>"
13552        },
13553        {
13554          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-03004",
13555          "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>"
13556        },
13557        {
13558          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformBufferUpdateAfterBind-03005",
13559          "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>"
13560        },
13561        {
13562          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingSampledImageUpdateAfterBind-03006",
13563          "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>"
13564        },
13565        {
13566          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageImageUpdateAfterBind-03007",
13567          "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>"
13568        },
13569        {
13570          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageBufferUpdateAfterBind-03008",
13571          "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>"
13572        },
13573        {
13574          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformTexelBufferUpdateAfterBind-03009",
13575          "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>"
13576        },
13577        {
13578          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageTexelBufferUpdateAfterBind-03010",
13579          "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>"
13580        },
13581        {
13582          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-None-03011",
13583          "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>"
13584        },
13585        {
13586          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUpdateUnusedWhilePending-03012",
13587          "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>"
13588        },
13589        {
13590          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingPartiallyBound-03013",
13591          "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>"
13592        },
13593        {
13594          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingVariableDescriptorCount-03014",
13595          "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>"
13596        },
13597        {
13598          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-03015",
13599          "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>"
13600        },
13601        {
13602          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-sType-sType",
13603          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO</code>"
13604        },
13605        {
13606          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-parameter",
13607          "text": " If <code>bindingCount</code> is not <code>0</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"
13608        }
13609      ],
13610      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_KHR_push_descriptor)": [
13611        {
13612          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-flags-03003",
13613          "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>"
13614        }
13615      ],
13616      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
13617        {
13618          "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingInlineUniformBlockUpdateAfterBind-02211",
13619          "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>"
13620        }
13621      ]
13622    },
13623    "vkGetDescriptorSetLayoutSupport": {
13624      "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
13625        {
13626          "vuid": "VUID-vkGetDescriptorSetLayoutSupport-device-parameter",
13627          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13628        },
13629        {
13630          "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pCreateInfo-parameter",
13631          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a> structure"
13632        },
13633        {
13634          "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pSupport-parameter",
13635          "text": " <code>pSupport</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorSetLayoutSupport\">VkDescriptorSetLayoutSupport</a> structure"
13636        }
13637      ]
13638    },
13639    "VkDescriptorSetLayoutSupport": {
13640      "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
13641        {
13642          "vuid": "VUID-VkDescriptorSetLayoutSupport-sType-sType",
13643          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT</code>"
13644        },
13645        {
13646          "vuid": "VUID-VkDescriptorSetLayoutSupport-pNext-pNext",
13647          "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>"
13648        },
13649        {
13650          "vuid": "VUID-VkDescriptorSetLayoutSupport-sType-unique",
13651          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
13652        }
13653      ]
13654    },
13655    "VkDescriptorSetVariableDescriptorCountLayoutSupport": {
13656      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
13657        {
13658          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountLayoutSupport-sType-sType",
13659          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT</code>"
13660        }
13661      ]
13662    },
13663    "vkDestroyDescriptorSetLayout": {
13664      "core": [
13665        {
13666          "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00284",
13667          "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"
13668        },
13669        {
13670          "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00285",
13671          "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>"
13672        },
13673        {
13674          "vuid": "VUID-vkDestroyDescriptorSetLayout-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-vkDestroyDescriptorSetLayout-descriptorSetLayout-parameter",
13679          "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"
13680        },
13681        {
13682          "vuid": "VUID-vkDestroyDescriptorSetLayout-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-vkDestroyDescriptorSetLayout-descriptorSetLayout-parent",
13687          "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>"
13688        }
13689      ]
13690    },
13691    "vkCreatePipelineLayout": {
13692      "core": [
13693        {
13694          "vuid": "VUID-vkCreatePipelineLayout-device-parameter",
13695          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
13696        },
13697        {
13698          "vuid": "VUID-vkCreatePipelineLayout-pCreateInfo-parameter",
13699          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a> structure"
13700        },
13701        {
13702          "vuid": "VUID-vkCreatePipelineLayout-pAllocator-parameter",
13703          "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"
13704        },
13705        {
13706          "vuid": "VUID-vkCreatePipelineLayout-pPipelineLayout-parameter",
13707          "text": " <code>pPipelineLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
13708        }
13709      ]
13710    },
13711    "VkPipelineLayoutCreateInfo": {
13712      "core": [
13713        {
13714          "vuid": "VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286",
13715          "text": " <code>setLayoutCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxBoundDescriptorSets</code>"
13716        },
13717        {
13718          "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-00292",
13719          "text": " Any two elements of <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> not include the same stage in <code>stageFlags</code>"
13720        },
13721        {
13722          "vuid": "VUID-VkPipelineLayoutCreateInfo-sType-sType",
13723          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO</code>"
13724        },
13725        {
13726          "vuid": "VUID-VkPipelineLayoutCreateInfo-pNext-pNext",
13727          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
13728        },
13729        {
13730          "vuid": "VUID-VkPipelineLayoutCreateInfo-flags-zerobitmask",
13731          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
13732        },
13733        {
13734          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter",
13735          "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"
13736        },
13737        {
13738          "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-parameter",
13739          "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"
13740        }
13741      ],
13742      "!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
13743        {
13744          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00287",
13745          "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>"
13746        },
13747        {
13748          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00288",
13749          "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>"
13750        },
13751        {
13752          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00289",
13753          "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>"
13754        },
13755        {
13756          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00290",
13757          "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>"
13758        },
13759        {
13760          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00291",
13761          "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>"
13762        },
13763        {
13764          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01676",
13765          "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>"
13766        },
13767        {
13768          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01677",
13769          "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>"
13770        },
13771        {
13772          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01678",
13773          "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>"
13774        },
13775        {
13776          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01679",
13777          "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>"
13778        },
13779        {
13780          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01680",
13781          "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>"
13782        },
13783        {
13784          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01681",
13785          "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>"
13786        },
13787        {
13788          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01682",
13789          "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>"
13790        },
13791        {
13792          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01683",
13793          "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>"
13794        },
13795        {
13796          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01684",
13797          "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>"
13798        }
13799      ],
13800      "!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
13801        {
13802          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02212",
13803          "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>"
13804        },
13805        {
13806          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02213",
13807          "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>"
13808        }
13809      ],
13810      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
13811        {
13812          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03016",
13813          "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>"
13814        },
13815        {
13816          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03017",
13817          "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>"
13818        },
13819        {
13820          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03018",
13821          "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>"
13822        },
13823        {
13824          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03019",
13825          "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>"
13826        },
13827        {
13828          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03020",
13829          "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>"
13830        },
13831        {
13832          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03021",
13833          "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>"
13834        },
13835        {
13836          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03022",
13837          "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>"
13838        },
13839        {
13840          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03023",
13841          "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>"
13842        },
13843        {
13844          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03024",
13845          "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>"
13846        },
13847        {
13848          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03025",
13849          "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>"
13850        },
13851        {
13852          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03026",
13853          "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>"
13854        },
13855        {
13856          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03027",
13857          "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>"
13858        },
13859        {
13860          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03028",
13861          "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>"
13862        },
13863        {
13864          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03029",
13865          "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>"
13866        },
13867        {
13868          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03030",
13869          "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>"
13870        },
13871        {
13872          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03031",
13873          "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>"
13874        },
13875        {
13876          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03032",
13877          "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>"
13878        },
13879        {
13880          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03033",
13881          "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>"
13882        },
13883        {
13884          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03034",
13885          "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>"
13886        },
13887        {
13888          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03035",
13889          "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>"
13890        },
13891        {
13892          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03036",
13893          "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>"
13894        },
13895        {
13896          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03037",
13897          "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>"
13898        },
13899        {
13900          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03038",
13901          "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>"
13902        },
13903        {
13904          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03039",
13905          "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>"
13906        },
13907        {
13908          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03040",
13909          "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>"
13910        },
13911        {
13912          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03041",
13913          "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>"
13914        },
13915        {
13916          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03042",
13917          "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>"
13918        },
13919        {
13920          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03043",
13921          "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>"
13922        }
13923      ],
13924      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
13925        {
13926          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02214",
13927          "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>"
13928        },
13929        {
13930          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02215",
13931          "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>"
13932        },
13933        {
13934          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02216",
13935          "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>"
13936        },
13937        {
13938          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02217",
13939          "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>"
13940        }
13941      ],
13942      "(VK_KHR_push_descriptor)": [
13943        {
13944          "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293",
13945          "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"
13946        }
13947      ],
13948      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
13949        {
13950          "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02381",
13951          "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>"
13952        }
13953      ],
13954      "(VK_EXT_fragment_density_map2)": [
13955        {
13956          "vuid": "VUID-VkPipelineLayoutCreateInfo-pImmutableSamplers-03566",
13957          "text": " The total number of <code>pImmutableSamplers</code> created with <code>flags</code> containing <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code> or <code>VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT</code> across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxDescriptorSetSubsampledSamplers\"><code>VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</code>::<code>maxDescriptorSetSubsampledSamplers</code></a>"
13958        }
13959      ]
13960    },
13961    "VkPushConstantRange": {
13962      "core": [
13963        {
13964          "vuid": "VUID-VkPushConstantRange-offset-00294",
13965          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>"
13966        },
13967        {
13968          "vuid": "VUID-VkPushConstantRange-offset-00295",
13969          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
13970        },
13971        {
13972          "vuid": "VUID-VkPushConstantRange-size-00296",
13973          "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13974        },
13975        {
13976          "vuid": "VUID-VkPushConstantRange-size-00297",
13977          "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
13978        },
13979        {
13980          "vuid": "VUID-VkPushConstantRange-size-00298",
13981          "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>"
13982        },
13983        {
13984          "vuid": "VUID-VkPushConstantRange-stageFlags-parameter",
13985          "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
13986        },
13987        {
13988          "vuid": "VUID-VkPushConstantRange-stageFlags-requiredbitmask",
13989          "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
13990        }
13991      ]
13992    },
13993    "vkDestroyPipelineLayout": {
13994      "core": [
13995        {
13996          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00299",
13997          "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"
13998        },
13999        {
14000          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00300",
14001          "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>"
14002        },
14003        {
14004          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-02004",
14005          "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"
14006        },
14007        {
14008          "vuid": "VUID-vkDestroyPipelineLayout-device-parameter",
14009          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14010        },
14011        {
14012          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parameter",
14013          "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"
14014        },
14015        {
14016          "vuid": "VUID-vkDestroyPipelineLayout-pAllocator-parameter",
14017          "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"
14018        },
14019        {
14020          "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parent",
14021          "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>"
14022        }
14023      ]
14024    },
14025    "vkCreateDescriptorPool": {
14026      "core": [
14027        {
14028          "vuid": "VUID-vkCreateDescriptorPool-device-parameter",
14029          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14030        },
14031        {
14032          "vuid": "VUID-vkCreateDescriptorPool-pCreateInfo-parameter",
14033          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorPoolCreateInfo\">VkDescriptorPoolCreateInfo</a> structure"
14034        },
14035        {
14036          "vuid": "VUID-vkCreateDescriptorPool-pAllocator-parameter",
14037          "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"
14038        },
14039        {
14040          "vuid": "VUID-vkCreateDescriptorPool-pDescriptorPool-parameter",
14041          "text": " <code>pDescriptorPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle"
14042        }
14043      ]
14044    },
14045    "VkDescriptorPoolCreateInfo": {
14046      "core": [
14047        {
14048          "vuid": "VUID-VkDescriptorPoolCreateInfo-maxSets-00301",
14049          "text": " <code>maxSets</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14050        },
14051        {
14052          "vuid": "VUID-VkDescriptorPoolCreateInfo-sType-sType",
14053          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO</code>"
14054        },
14055        {
14056          "vuid": "VUID-VkDescriptorPoolCreateInfo-pNext-pNext",
14057          "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>"
14058        },
14059        {
14060          "vuid": "VUID-VkDescriptorPoolCreateInfo-sType-unique",
14061          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
14062        },
14063        {
14064          "vuid": "VUID-VkDescriptorPoolCreateInfo-flags-parameter",
14065          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorPoolCreateFlagBits\">VkDescriptorPoolCreateFlagBits</a> values"
14066        },
14067        {
14068          "vuid": "VUID-VkDescriptorPoolCreateInfo-pPoolSizes-parameter",
14069          "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"
14070        },
14071        {
14072          "vuid": "VUID-VkDescriptorPoolCreateInfo-poolSizeCount-arraylength",
14073          "text": " <code>poolSizeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14074        }
14075      ]
14076    },
14077    "VkDescriptorPoolInlineUniformBlockCreateInfoEXT": {
14078      "(VK_EXT_inline_uniform_block)": [
14079        {
14080          "vuid": "VUID-VkDescriptorPoolInlineUniformBlockCreateInfoEXT-sType-sType",
14081          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT</code>"
14082        }
14083      ]
14084    },
14085    "VkDescriptorPoolSize": {
14086      "core": [
14087        {
14088          "vuid": "VUID-VkDescriptorPoolSize-descriptorCount-00302",
14089          "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14090        },
14091        {
14092          "vuid": "VUID-VkDescriptorPoolSize-type-parameter",
14093          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
14094        }
14095      ],
14096      "(VK_EXT_inline_uniform_block)": [
14097        {
14098          "vuid": "VUID-VkDescriptorPoolSize-type-02218",
14099          "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>"
14100        }
14101      ]
14102    },
14103    "vkDestroyDescriptorPool": {
14104      "core": [
14105        {
14106          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00303",
14107          "text": " All submitted commands that refer to <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution"
14108        },
14109        {
14110          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00304",
14111          "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"
14112        },
14113        {
14114          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00305",
14115          "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>"
14116        },
14117        {
14118          "vuid": "VUID-vkDestroyDescriptorPool-device-parameter",
14119          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14120        },
14121        {
14122          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parameter",
14123          "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"
14124        },
14125        {
14126          "vuid": "VUID-vkDestroyDescriptorPool-pAllocator-parameter",
14127          "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"
14128        },
14129        {
14130          "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parent",
14131          "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>"
14132        }
14133      ]
14134    },
14135    "vkAllocateDescriptorSets": {
14136      "core": [
14137        {
14138          "vuid": "VUID-vkAllocateDescriptorSets-device-parameter",
14139          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14140        },
14141        {
14142          "vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo-parameter",
14143          "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorSetAllocateInfo\">VkDescriptorSetAllocateInfo</a> structure"
14144        },
14145        {
14146          "vuid": "VUID-vkAllocateDescriptorSets-pDescriptorSets-parameter",
14147          "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"
14148        },
14149        {
14150          "vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo::descriptorSetCount-arraylength",
14151          "text": " <code>pAllocateInfo-&gt;descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14152        }
14153      ]
14154    },
14155    "VkDescriptorSetAllocateInfo": {
14156      "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
14157        {
14158          "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-00306",
14159          "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>"
14160        },
14161        {
14162          "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-00307",
14163          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts"
14164        }
14165      ],
14166      "(VK_KHR_push_descriptor)": [
14167        {
14168          "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308",
14169          "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"
14170        }
14171      ],
14172      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
14173        {
14174          "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-03044",
14175          "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"
14176        }
14177      ],
14178      "core": [
14179        {
14180          "vuid": "VUID-VkDescriptorSetAllocateInfo-sType-sType",
14181          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO</code>"
14182        },
14183        {
14184          "vuid": "VUID-VkDescriptorSetAllocateInfo-pNext-pNext",
14185          "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>"
14186        },
14187        {
14188          "vuid": "VUID-VkDescriptorSetAllocateInfo-sType-unique",
14189          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
14190        },
14191        {
14192          "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-parameter",
14193          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle"
14194        },
14195        {
14196          "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-parameter",
14197          "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"
14198        },
14199        {
14200          "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-arraylength",
14201          "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14202        },
14203        {
14204          "vuid": "VUID-VkDescriptorSetAllocateInfo-commonparent",
14205          "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>"
14206        }
14207      ]
14208    },
14209    "VkDescriptorSetVariableDescriptorCountAllocateInfo": {
14210      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
14211        {
14212          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-descriptorSetCount-03045",
14213          "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>"
14214        },
14215        {
14216          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-pSetLayouts-03046",
14217          "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"
14218        },
14219        {
14220          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-sType-sType",
14221          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO</code>"
14222        },
14223        {
14224          "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-pDescriptorCounts-parameter",
14225          "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"
14226        }
14227      ]
14228    },
14229    "vkFreeDescriptorSets": {
14230      "core": [
14231        {
14232          "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00309",
14233          "text": " All submitted commands that refer to any element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have completed execution"
14234        },
14235        {
14236          "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00310",
14237          "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>"
14238        },
14239        {
14240          "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00311",
14241          "text": " Each valid handle in <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been allocated from <code>descriptorPool</code>"
14242        },
14243        {
14244          "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-00312",
14245          "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"
14246        },
14247        {
14248          "vuid": "VUID-vkFreeDescriptorSets-device-parameter",
14249          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14250        },
14251        {
14252          "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parameter",
14253          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle"
14254        },
14255        {
14256          "vuid": "VUID-vkFreeDescriptorSets-descriptorSetCount-arraylength",
14257          "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14258        },
14259        {
14260          "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parent",
14261          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
14262        },
14263        {
14264          "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-parent",
14265          "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>"
14266        }
14267      ]
14268    },
14269    "vkResetDescriptorPool": {
14270      "core": [
14271        {
14272          "vuid": "VUID-vkResetDescriptorPool-descriptorPool-00313",
14273          "text": " All uses of <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution"
14274        },
14275        {
14276          "vuid": "VUID-vkResetDescriptorPool-device-parameter",
14277          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14278        },
14279        {
14280          "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parameter",
14281          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle"
14282        },
14283        {
14284          "vuid": "VUID-vkResetDescriptorPool-flags-zerobitmask",
14285          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
14286        },
14287        {
14288          "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parent",
14289          "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
14290        }
14291      ]
14292    },
14293    "vkUpdateDescriptorSets": {
14294      "!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
14295        {
14296          "vuid": "VUID-vkUpdateDescriptorSets-dstSet-00314",
14297          "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>"
14298        }
14299      ],
14300      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
14301        {
14302          "vuid": "VUID-vkUpdateDescriptorSets-None-03047",
14303          "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>"
14304        }
14305      ],
14306      "core": [
14307        {
14308          "vuid": "VUID-vkUpdateDescriptorSets-device-parameter",
14309          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14310        },
14311        {
14312          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-parameter",
14313          "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"
14314        },
14315        {
14316          "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorCopies-parameter",
14317          "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"
14318        }
14319      ]
14320    },
14321    "VkWriteDescriptorSet": {
14322      "core": [
14323        {
14324          "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00315",
14325          "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"
14326        },
14327        {
14328          "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00316",
14329          "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a binding with a non-zero <code>descriptorCount</code>"
14330        },
14331        {
14332          "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00317",
14333          "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>"
14334        },
14335        {
14336          "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00318",
14337          "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"
14338        },
14339        {
14340          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00319",
14341          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> match the type of <code>dstBinding</code> within <code>dstSet</code>"
14342        },
14343        {
14344          "vuid": "VUID-VkWriteDescriptorSet-dstSet-00320",
14345          "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle"
14346        },
14347        {
14348          "vuid": "VUID-VkWriteDescriptorSet-dstArrayElement-00321",
14349          "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>"
14350        },
14351        {
14352          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00322",
14353          "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"
14354        },
14355        {
14356          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02994",
14357          "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>"
14358        },
14359        {
14360          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02995",
14361          "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>"
14362        },
14363        {
14364          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00324",
14365          "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"
14366        },
14367        {
14368          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00325",
14369          "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"
14370        },
14371        {
14372          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02996",
14373          "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>"
14374        },
14375        {
14376          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02997",
14377          "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>"
14378        },
14379        {
14380          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00327",
14381          "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>"
14382        },
14383        {
14384          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00328",
14385          "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>"
14386        },
14387        {
14388          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00329",
14389          "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"
14390        },
14391        {
14392          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00330",
14393          "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"
14394        },
14395        {
14396          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00331",
14397          "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"
14398        },
14399        {
14400          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00332",
14401          "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>"
14402        },
14403        {
14404          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00333",
14405          "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>"
14406        },
14407        {
14408          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00334",
14409          "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"
14410        },
14411        {
14412          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00335",
14413          "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"
14414        },
14415        {
14416          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00336",
14417          "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"
14418        },
14419        {
14420          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00337",
14421          "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"
14422        },
14423        {
14424          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-04149",
14425          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</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>"
14426        },
14427        {
14428          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-04150",
14429          "text": " If <code>descriptorType</code> is <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-combinedimagesampler\">Combined Image Sampler</a>"
14430        },
14431        {
14432          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-04151",
14433          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</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-inputattachment\">Input Attachment</a>"
14434        },
14435        {
14436          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-04152",
14437          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</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-storageimage\">Storage Image</a>"
14438        },
14439        {
14440          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-04153",
14441          "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</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-storageimage\">Storage Image</a>"
14442        },
14443        {
14444          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00338",
14445          "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"
14446        },
14447        {
14448          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00339",
14449          "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"
14450        },
14451        {
14452          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02752",
14453          "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>"
14454        },
14455        {
14456          "vuid": "VUID-VkWriteDescriptorSet-sType-sType",
14457          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET</code>"
14458        },
14459        {
14460          "vuid": "VUID-VkWriteDescriptorSet-pNext-pNext",
14461          "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>"
14462        },
14463        {
14464          "vuid": "VUID-VkWriteDescriptorSet-sType-unique",
14465          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
14466        },
14467        {
14468          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-parameter",
14469          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
14470        },
14471        {
14472          "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-arraylength",
14473          "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14474        },
14475        {
14476          "vuid": "VUID-VkWriteDescriptorSet-commonparent",
14477          "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>"
14478        }
14479      ],
14480      "(VK_EXT_inline_uniform_block)": [
14481        {
14482          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02219",
14483          "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>"
14484        },
14485        {
14486          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02220",
14487          "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>"
14488        },
14489        {
14490          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02221",
14491          "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>"
14492        }
14493      ],
14494      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
14495        {
14496          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02382",
14497          "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>"
14498        }
14499      ],
14500      "(VK_VULKAN_1_1,VK_KHR_sampler_ycbcr_conversion)": [
14501        {
14502          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01946",
14503          "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"
14504        },
14505        {
14506          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02738",
14507          "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"
14508        },
14509        {
14510          "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01948",
14511          "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"
14512        }
14513      ],
14514      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
14515        {
14516          "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-03048",
14517          "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>"
14518        }
14519      ]
14520    },
14521    "VkDescriptorBufferInfo": {
14522      "core": [
14523        {
14524          "vuid": "VUID-VkDescriptorBufferInfo-offset-00340",
14525          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
14526        },
14527        {
14528          "vuid": "VUID-VkDescriptorBufferInfo-range-00341",
14529          "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>"
14530        },
14531        {
14532          "vuid": "VUID-VkDescriptorBufferInfo-range-00342",
14533          "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>"
14534        },
14535        {
14536          "vuid": "VUID-VkDescriptorBufferInfo-buffer-02998",
14537          "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>"
14538        },
14539        {
14540          "vuid": "VUID-VkDescriptorBufferInfo-buffer-parameter",
14541          "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"
14542        }
14543      ],
14544      "(VK_EXT_robustness2)": [
14545        {
14546          "vuid": "VUID-VkDescriptorBufferInfo-buffer-02999",
14547          "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>"
14548        }
14549      ]
14550    },
14551    "VkDescriptorImageInfo": {
14552      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
14553        {
14554          "vuid": "VUID-VkDescriptorImageInfo-imageView-00343",
14555          "text": " <code>imageView</code> <strong class=\"purple\">must</strong> not be 2D or 2D array image view created from a 3D image"
14556        }
14557      ],
14558      "core": [
14559        {
14560          "vuid": "VUID-VkDescriptorImageInfo-imageView-01976",
14561          "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"
14562        },
14563        {
14564          "vuid": "VUID-VkDescriptorImageInfo-imageLayout-00344",
14565          "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>"
14566        },
14567        {
14568          "vuid": "VUID-VkDescriptorImageInfo-commonparent",
14569          "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>"
14570        }
14571      ],
14572      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
14573        {
14574          "vuid": "VUID-VkDescriptorImageInfo-sampler-01564",
14575          "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>"
14576        }
14577      ],
14578      "(VK_KHR_portability_subset)": [
14579        {
14580          "vuid": "VUID-VkDescriptorImageInfo-mutableComparisonSamplers-04450",
14581          "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>mutableComparisonSamplers</code> is <code>VK_FALSE</code>, then <code>sampler</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkSamplerCreateInfo\">VkSamplerCreateInfo</a>::<code>compareEnable</code> set to <code>VK_FALSE</code>."
14582        }
14583      ]
14584    },
14585    "VkWriteDescriptorSetInlineUniformBlockEXT": {
14586      "(VK_EXT_inline_uniform_block)": [
14587        {
14588          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-02222",
14589          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
14590        },
14591        {
14592          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-sType-sType",
14593          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT</code>"
14594        },
14595        {
14596          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-pData-parameter",
14597          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
14598        },
14599        {
14600          "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-arraylength",
14601          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14602        }
14603      ]
14604    },
14605    "VkWriteDescriptorSetAccelerationStructureKHR": {
14606      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
14607        {
14608          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-02236",
14609          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be equal to <code>descriptorCount</code> in the extended structure"
14610        },
14611        {
14612          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-02764",
14613          "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>"
14614        },
14615        {
14616          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-sType-sType",
14617          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR</code>"
14618        },
14619        {
14620          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-parameter",
14621          "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"
14622        },
14623        {
14624          "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-arraylength",
14625          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14626        }
14627      ]
14628    },
14629    "VkCopyDescriptorSet": {
14630      "core": [
14631        {
14632          "vuid": "VUID-VkCopyDescriptorSet-srcBinding-00345",
14633          "text": " <code>srcBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>srcSet</code>"
14634        },
14635        {
14636          "vuid": "VUID-VkCopyDescriptorSet-srcArrayElement-00346",
14637          "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>"
14638        },
14639        {
14640          "vuid": "VUID-VkCopyDescriptorSet-dstBinding-00347",
14641          "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>dstSet</code>"
14642        },
14643        {
14644          "vuid": "VUID-VkCopyDescriptorSet-dstArrayElement-00348",
14645          "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>"
14646        },
14647        {
14648          "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02632",
14649          "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>"
14650        },
14651        {
14652          "vuid": "VUID-VkCopyDescriptorSet-srcSet-00349",
14653          "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>"
14654        },
14655        {
14656          "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02753",
14657          "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>"
14658        },
14659        {
14660          "vuid": "VUID-VkCopyDescriptorSet-sType-sType",
14661          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET</code>"
14662        },
14663        {
14664          "vuid": "VUID-VkCopyDescriptorSet-pNext-pNext",
14665          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
14666        },
14667        {
14668          "vuid": "VUID-VkCopyDescriptorSet-srcSet-parameter",
14669          "text": " <code>srcSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle"
14670        },
14671        {
14672          "vuid": "VUID-VkCopyDescriptorSet-dstSet-parameter",
14673          "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle"
14674        },
14675        {
14676          "vuid": "VUID-VkCopyDescriptorSet-commonparent",
14677          "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>"
14678        }
14679      ],
14680      "(VK_EXT_inline_uniform_block)": [
14681        {
14682          "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02223",
14683          "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>"
14684        },
14685        {
14686          "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02224",
14687          "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>"
14688        },
14689        {
14690          "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02225",
14691          "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>"
14692        }
14693      ],
14694      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
14695        {
14696          "vuid": "VUID-VkCopyDescriptorSet-srcSet-01918",
14697          "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"
14698        },
14699        {
14700          "vuid": "VUID-VkCopyDescriptorSet-srcSet-01919",
14701          "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"
14702        },
14703        {
14704          "vuid": "VUID-VkCopyDescriptorSet-srcSet-01920",
14705          "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"
14706        },
14707        {
14708          "vuid": "VUID-VkCopyDescriptorSet-srcSet-01921",
14709          "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"
14710        }
14711      ]
14712    },
14713    "vkCreateDescriptorUpdateTemplate": {
14714      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
14715        {
14716          "vuid": "VUID-vkCreateDescriptorUpdateTemplate-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-vkCreateDescriptorUpdateTemplate-pCreateInfo-parameter",
14721          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorUpdateTemplateCreateInfo\">VkDescriptorUpdateTemplateCreateInfo</a> structure"
14722        },
14723        {
14724          "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pAllocator-parameter",
14725          "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"
14726        },
14727        {
14728          "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pDescriptorUpdateTemplate-parameter",
14729          "text": " <code>pDescriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle"
14730        }
14731      ]
14732    },
14733    "VkDescriptorUpdateTemplateCreateInfo": {
14734      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
14735        {
14736          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00350",
14737          "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"
14738        },
14739        {
14740          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-sType-sType",
14741          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO</code>"
14742        },
14743        {
14744          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pNext-pNext",
14745          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
14746        },
14747        {
14748          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-flags-zerobitmask",
14749          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
14750        },
14751        {
14752          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pDescriptorUpdateEntries-parameter",
14753          "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"
14754        },
14755        {
14756          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-parameter",
14757          "text": " <code>templateType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplateType\">VkDescriptorUpdateTemplateType</a> value"
14758        },
14759        {
14760          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorUpdateEntryCount-arraylength",
14761          "text": " <code>descriptorUpdateEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14762        },
14763        {
14764          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-commonparent",
14765          "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>"
14766        }
14767      ],
14768      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_KHR_push_descriptor)": [
14769        {
14770          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00351",
14771          "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"
14772        },
14773        {
14774          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00352",
14775          "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"
14776        },
14777        {
14778          "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00353",
14779          "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>"
14780        }
14781      ]
14782    },
14783    "VkDescriptorUpdateTemplateEntry": {
14784      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
14785        {
14786          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstBinding-00354",
14787          "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"
14788        },
14789        {
14790          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstArrayElement-00355",
14791          "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>"
14792        },
14793        {
14794          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter",
14795          "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
14796        }
14797      ],
14798      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_EXT_inline_uniform_block)": [
14799        {
14800          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226",
14801          "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>"
14802        },
14803        {
14804          "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02227",
14805          "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>"
14806        }
14807      ]
14808    },
14809    "vkDestroyDescriptorUpdateTemplate": {
14810      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
14811        {
14812          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356",
14813          "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"
14814        },
14815        {
14816          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357",
14817          "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>"
14818        },
14819        {
14820          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-device-parameter",
14821          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14822        },
14823        {
14824          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parameter",
14825          "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"
14826        },
14827        {
14828          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-pAllocator-parameter",
14829          "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"
14830        },
14831        {
14832          "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parent",
14833          "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>"
14834        }
14835      ]
14836    },
14837    "vkUpdateDescriptorSetWithTemplate": {
14838      "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
14839        {
14840          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-pData-01685",
14841          "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>"
14842        },
14843        {
14844          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-device-parameter",
14845          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
14846        },
14847        {
14848          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-parameter",
14849          "text": " <code>descriptorSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle"
14850        },
14851        {
14852          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parameter",
14853          "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle"
14854        },
14855        {
14856          "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parent",
14857          "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
14858        }
14859      ]
14860    },
14861    "vkCmdBindDescriptorSets": {
14862      "core": [
14863        {
14864          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358",
14865          "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>"
14866        },
14867        {
14868          "vuid": "VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359",
14869          "text": " <code>dynamicOffsetCount</code> <strong class=\"purple\">must</strong> be equal to the total number of dynamic descriptors in <code>pDescriptorSets</code>"
14870        },
14871        {
14872          "vuid": "VUID-vkCmdBindDescriptorSets-firstSet-00360",
14873          "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"
14874        },
14875        {
14876          "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361",
14877          "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"
14878        },
14879        {
14880          "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01971",
14881          "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>"
14882        },
14883        {
14884          "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01972",
14885          "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>"
14886        },
14887        {
14888          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979",
14889          "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"
14890        },
14891        {
14892          "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-parameter",
14893          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
14894        },
14895        {
14896          "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter",
14897          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
14898        },
14899        {
14900          "vuid": "VUID-vkCmdBindDescriptorSets-layout-parameter",
14901          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
14902        },
14903        {
14904          "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter",
14905          "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"
14906        },
14907        {
14908          "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter",
14909          "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"
14910        },
14911        {
14912          "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-recording",
14913          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14914        },
14915        {
14916          "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-cmdpool",
14917          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
14918        },
14919        {
14920          "vuid": "VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength",
14921          "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14922        },
14923        {
14924          "vuid": "VUID-vkCmdBindDescriptorSets-commonparent",
14925          "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>"
14926        }
14927      ]
14928    },
14929    "vkCmdPushDescriptorSetKHR": {
14930      "(VK_KHR_push_descriptor)": [
14931        {
14932          "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-00363",
14933          "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"
14934        },
14935        {
14936          "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00364",
14937          "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"
14938        },
14939        {
14940          "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00365",
14941          "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>"
14942        },
14943        {
14944          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter",
14945          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
14946        },
14947        {
14948          "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter",
14949          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
14950        },
14951        {
14952          "vuid": "VUID-vkCmdPushDescriptorSetKHR-layout-parameter",
14953          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
14954        },
14955        {
14956          "vuid": "VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter",
14957          "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"
14958        },
14959        {
14960          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-recording",
14961          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14962        },
14963        {
14964          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-cmdpool",
14965          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
14966        },
14967        {
14968          "vuid": "VUID-vkCmdPushDescriptorSetKHR-descriptorWriteCount-arraylength",
14969          "text": " <code>descriptorWriteCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14970        },
14971        {
14972          "vuid": "VUID-vkCmdPushDescriptorSetKHR-commonparent",
14973          "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>"
14974        }
14975      ]
14976    },
14977    "vkCmdPushDescriptorSetWithTemplateKHR": {
14978      "(VK_KHR_push_descriptor)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
14979        {
14980          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-00366",
14981          "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"
14982        },
14983        {
14984          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686",
14985          "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>"
14986        },
14987        {
14988          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter",
14989          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
14990        },
14991        {
14992          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter",
14993          "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle"
14994        },
14995        {
14996          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter",
14997          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
14998        },
14999        {
15000          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-recording",
15001          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15002        },
15003        {
15004          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool",
15005          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
15006        },
15007        {
15008          "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent",
15009          "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>"
15010        }
15011      ]
15012    },
15013    "vkCmdPushConstants": {
15014      "core": [
15015        {
15016          "vuid": "VUID-vkCmdPushConstants-offset-01795",
15017          "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"
15018        },
15019        {
15020          "vuid": "VUID-vkCmdPushConstants-offset-01796",
15021          "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>"
15022        },
15023        {
15024          "vuid": "VUID-vkCmdPushConstants-offset-00368",
15025          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
15026        },
15027        {
15028          "vuid": "VUID-vkCmdPushConstants-size-00369",
15029          "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
15030        },
15031        {
15032          "vuid": "VUID-vkCmdPushConstants-offset-00370",
15033          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>"
15034        },
15035        {
15036          "vuid": "VUID-vkCmdPushConstants-size-00371",
15037          "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>"
15038        },
15039        {
15040          "vuid": "VUID-vkCmdPushConstants-commandBuffer-parameter",
15041          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
15042        },
15043        {
15044          "vuid": "VUID-vkCmdPushConstants-layout-parameter",
15045          "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle"
15046        },
15047        {
15048          "vuid": "VUID-vkCmdPushConstants-stageFlags-parameter",
15049          "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
15050        },
15051        {
15052          "vuid": "VUID-vkCmdPushConstants-stageFlags-requiredbitmask",
15053          "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
15054        },
15055        {
15056          "vuid": "VUID-vkCmdPushConstants-pValues-parameter",
15057          "text": " <code>pValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>size</code> bytes"
15058        },
15059        {
15060          "vuid": "VUID-vkCmdPushConstants-commandBuffer-recording",
15061          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15062        },
15063        {
15064          "vuid": "VUID-vkCmdPushConstants-commandBuffer-cmdpool",
15065          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
15066        },
15067        {
15068          "vuid": "VUID-vkCmdPushConstants-size-arraylength",
15069          "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
15070        },
15071        {
15072          "vuid": "VUID-vkCmdPushConstants-commonparent",
15073          "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>"
15074        }
15075      ]
15076    },
15077    "vkGetBufferDeviceAddress": {
15078      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)": [
15079        {
15080          "vuid": "VUID-vkGetBufferDeviceAddress-bufferDeviceAddress-03324",
15081          "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"
15082        },
15083        {
15084          "vuid": "VUID-vkGetBufferDeviceAddress-device-03325",
15085          "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"
15086        },
15087        {
15088          "vuid": "VUID-vkGetBufferDeviceAddress-device-parameter",
15089          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
15090        },
15091        {
15092          "vuid": "VUID-vkGetBufferDeviceAddress-pInfo-parameter",
15093          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferDeviceAddressInfo\">VkBufferDeviceAddressInfo</a> structure"
15094        }
15095      ]
15096    },
15097    "VkBufferDeviceAddressInfo": {
15098      "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)": [
15099        {
15100          "vuid": "VUID-VkBufferDeviceAddressInfo-buffer-02600",
15101          "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"
15102        },
15103        {
15104          "vuid": "VUID-VkBufferDeviceAddressInfo-buffer-02601",
15105          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT</code>"
15106        },
15107        {
15108          "vuid": "VUID-VkBufferDeviceAddressInfo-sType-sType",
15109          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO</code>"
15110        },
15111        {
15112          "vuid": "VUID-VkBufferDeviceAddressInfo-pNext-pNext",
15113          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
15114        },
15115        {
15116          "vuid": "VUID-VkBufferDeviceAddressInfo-buffer-parameter",
15117          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
15118        }
15119      ]
15120    },
15121    "vkGetBufferOpaqueCaptureAddress": {
15122      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
15123        {
15124          "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-None-03326",
15125          "text": " The <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled"
15126        },
15127        {
15128          "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-device-03327",
15129          "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"
15130        },
15131        {
15132          "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-device-parameter",
15133          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
15134        },
15135        {
15136          "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-pInfo-parameter",
15137          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferDeviceAddressInfo\">VkBufferDeviceAddressInfo</a> structure"
15138        }
15139      ]
15140    },
15141    "BaryCoordNV": {
15142      "(VK_NV_fragment_shader_barycentric)": [
15143        {
15144          "vuid": "VUID-BaryCoordNV-BaryCoordNV-04154",
15145          "text": " The <code>BaryCoordNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15146        },
15147        {
15148          "vuid": "VUID-BaryCoordNV-BaryCoordNV-04155",
15149          "text": " The variable decorated with <code>BaryCoordNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15150        },
15151        {
15152          "vuid": "VUID-BaryCoordNV-BaryCoordNV-04156",
15153          "text": " The variable decorated with <code>BaryCoordNV</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values"
15154        }
15155      ]
15156    },
15157    "BaryCoordNoPerspAMD": {
15158      "(VK_AMD_shader_explicit_vertex_parameter)": [
15159        {
15160          "vuid": "VUID-BaryCoordNoPerspAMD-BaryCoordNoPerspAMD-04157",
15161          "text": " The <code>BaryCoordNoPerspAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15162        },
15163        {
15164          "vuid": "VUID-BaryCoordNoPerspAMD-BaryCoordNoPerspAMD-04158",
15165          "text": " The variable decorated with <code>BaryCoordNoPerspAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15166        },
15167        {
15168          "vuid": "VUID-BaryCoordNoPerspAMD-BaryCoordNoPerspAMD-04159",
15169          "text": " The variable decorated with <code>BaryCoordNoPerspAMD</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values"
15170        }
15171      ]
15172    },
15173    "BaryCoordNoPerspNV": {
15174      "(VK_NV_fragment_shader_barycentric)": [
15175        {
15176          "vuid": "VUID-BaryCoordNoPerspNV-BaryCoordNoPerspNV-04160",
15177          "text": " The <code>BaryCoordNoPerspNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15178        },
15179        {
15180          "vuid": "VUID-BaryCoordNoPerspNV-BaryCoordNoPerspNV-04161",
15181          "text": " The variable decorated with <code>BaryCoordNoPerspNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15182        },
15183        {
15184          "vuid": "VUID-BaryCoordNoPerspNV-BaryCoordNoPerspNV-04162",
15185          "text": " The variable decorated with <code>BaryCoordNoPerspNV</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values"
15186        }
15187      ]
15188    },
15189    "BaryCoordNoPerspCentroidAMD": {
15190      "(VK_AMD_shader_explicit_vertex_parameter)": [
15191        {
15192          "vuid": "VUID-BaryCoordNoPerspCentroidAMD-BaryCoordNoPerspCentroidAMD-04163",
15193          "text": " The <code>BaryCoordNoPerspCentroidAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15194        },
15195        {
15196          "vuid": "VUID-BaryCoordNoPerspCentroidAMD-BaryCoordNoPerspCentroidAMD-04164",
15197          "text": " The variable decorated with <code>BaryCoordNoPerspCentroidAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15198        },
15199        {
15200          "vuid": "VUID-BaryCoordNoPerspCentroidAMD-BaryCoordNoPerspCentroidAMD-04165",
15201          "text": " The variable decorated with <code>BaryCoordNoPerspCentroidAMD</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values"
15202        }
15203      ]
15204    },
15205    "BaryCoordNoPerspSampleAMD": {
15206      "(VK_AMD_shader_explicit_vertex_parameter)": [
15207        {
15208          "vuid": "VUID-BaryCoordNoPerspSampleAMD-BaryCoordNoPerspSampleAMD-04166",
15209          "text": " The <code>BaryCoordNoPerspSampleAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15210        },
15211        {
15212          "vuid": "VUID-BaryCoordNoPerspSampleAMD-BaryCoordNoPerspSampleAMD-04167",
15213          "text": " The variable decorated with <code>BaryCoordNoPerspSampleAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15214        },
15215        {
15216          "vuid": "VUID-BaryCoordNoPerspSampleAMD-BaryCoordNoPerspSampleAMD-04168",
15217          "text": " The variable decorated with <code>BaryCoordNoPerspSampleAMD</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values"
15218        }
15219      ]
15220    },
15221    "BaryCoordPullModelAMD": {
15222      "(VK_AMD_shader_explicit_vertex_parameter)": [
15223        {
15224          "vuid": "VUID-BaryCoordPullModelAMD-BaryCoordPullModelAMD-04169",
15225          "text": " The <code>BaryCoordPullModelAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15226        },
15227        {
15228          "vuid": "VUID-BaryCoordPullModelAMD-BaryCoordPullModelAMD-04170",
15229          "text": " The variable decorated with <code>BaryCoordPullModelAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15230        },
15231        {
15232          "vuid": "VUID-BaryCoordPullModelAMD-BaryCoordPullModelAMD-04171",
15233          "text": " The variable decorated with <code>BaryCoordPullModelAMD</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values"
15234        }
15235      ]
15236    },
15237    "BaryCoordSmoothAMD": {
15238      "(VK_AMD_shader_explicit_vertex_parameter)": [
15239        {
15240          "vuid": "VUID-BaryCoordSmoothAMD-BaryCoordSmoothAMD-04172",
15241          "text": " The <code>BaryCoordSmoothAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15242        },
15243        {
15244          "vuid": "VUID-BaryCoordSmoothAMD-BaryCoordSmoothAMD-04173",
15245          "text": " The variable decorated with <code>BaryCoordSmoothAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15246        },
15247        {
15248          "vuid": "VUID-BaryCoordSmoothAMD-BaryCoordSmoothAMD-04174",
15249          "text": " The variable decorated with <code>BaryCoordSmoothAMD</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values"
15250        }
15251      ]
15252    },
15253    "BaryCoordSmoothCentroidAMD": {
15254      "(VK_AMD_shader_explicit_vertex_parameter)": [
15255        {
15256          "vuid": "VUID-BaryCoordSmoothCentroidAMD-BaryCoordSmoothCentroidAMD-04175",
15257          "text": " The <code>BaryCoordSmoothCentroidAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15258        },
15259        {
15260          "vuid": "VUID-BaryCoordSmoothCentroidAMD-BaryCoordSmoothCentroidAMD-04176",
15261          "text": " The variable decorated with <code>BaryCoordSmoothCentroidAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15262        },
15263        {
15264          "vuid": "VUID-BaryCoordSmoothCentroidAMD-BaryCoordSmoothCentroidAMD-04177",
15265          "text": " The variable decorated with <code>BaryCoordSmoothCentroidAMD</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values"
15266        }
15267      ]
15268    },
15269    "BaryCoordSmoothSampleAMD": {
15270      "(VK_AMD_shader_explicit_vertex_parameter)": [
15271        {
15272          "vuid": "VUID-BaryCoordSmoothSampleAMD-BaryCoordSmoothSampleAMD-04178",
15273          "text": " The <code>BaryCoordSmoothSampleAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15274        },
15275        {
15276          "vuid": "VUID-BaryCoordSmoothSampleAMD-BaryCoordSmoothSampleAMD-04179",
15277          "text": " The variable decorated with <code>BaryCoordSmoothSampleAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15278        },
15279        {
15280          "vuid": "VUID-BaryCoordSmoothSampleAMD-BaryCoordSmoothSampleAMD-04180",
15281          "text": " The variable decorated with <code>BaryCoordSmoothSampleAMD</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values"
15282        }
15283      ]
15284    },
15285    "BaseInstance": {
15286      "(VK_VERSION_1_1,VK_KHR_shader_draw_parameters)": [
15287        {
15288          "vuid": "VUID-BaseInstance-BaseInstance-04181",
15289          "text": " The <code>BaseInstance</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code> {ExecutionModel}"
15290        },
15291        {
15292          "vuid": "VUID-BaseInstance-BaseInstance-04182",
15293          "text": " The variable decorated with <code>BaseInstance</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15294        },
15295        {
15296          "vuid": "VUID-BaseInstance-BaseInstance-04183",
15297          "text": " The variable decorated with <code>BaseInstance</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15298        }
15299      ]
15300    },
15301    "BaseVertex": {
15302      "(VK_VERSION_1_1,VK_KHR_shader_draw_parameters)": [
15303        {
15304          "vuid": "VUID-BaseVertex-BaseVertex-04184",
15305          "text": " The <code>BaseVertex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code> {ExecutionModel}"
15306        },
15307        {
15308          "vuid": "VUID-BaseVertex-BaseVertex-04185",
15309          "text": " The variable decorated with <code>BaseVertex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15310        },
15311        {
15312          "vuid": "VUID-BaseVertex-BaseVertex-04186",
15313          "text": " The variable decorated with <code>BaseVertex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15314        }
15315      ]
15316    },
15317    "ClipDistance": {
15318      "core": [
15319        {
15320          "vuid": "VUID-ClipDistance-ClipDistance-04187",
15321          "text": " The <code>ClipDistance</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, <code>Fragment</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel}"
15322        },
15323        {
15324          "vuid": "VUID-ClipDistance-ClipDistance-04188",
15325          "text": " The variable decorated with <code>ClipDistance</code> within the <code>MeshNV</code> or <code>Vertex</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
15326        },
15327        {
15328          "vuid": "VUID-ClipDistance-ClipDistance-04189",
15329          "text": " The variable decorated with <code>ClipDistance</code> within the <code>Fragment</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15330        },
15331        {
15332          "vuid": "VUID-ClipDistance-ClipDistance-04190",
15333          "text": " The variable decorated with <code>ClipDistance</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> not be declared in a {StorageClass} other than <code>Input</code> or <code>Output</code>"
15334        },
15335        {
15336          "vuid": "VUID-ClipDistance-ClipDistance-04191",
15337          "text": " The variable decorated with <code>ClipDistance</code> <strong class=\"purple\">must</strong> be declared as an array of 32-bit floating-point values"
15338        }
15339      ]
15340    },
15341    "ClipDistancePerViewNV": {
15342      "(VK_NV_mesh_shader)": [
15343        {
15344          "vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04192",
15345          "text": " The <code>ClipDistancePerViewNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> {ExecutionModel}"
15346        },
15347        {
15348          "vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04193",
15349          "text": " The variable decorated with <code>ClipDistancePerViewNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
15350        },
15351        {
15352          "vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04194",
15353          "text": " The variable decorated with <code>ClipDistancePerViewNV</code> <strong class=\"purple\">must</strong> also be decorated with the <code>PerViewNV</code> decoration."
15354        },
15355        {
15356          "vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04195",
15357          "text": " The variable decorated with <code>ClipDistancePerViewNV</code> <strong class=\"purple\">must</strong> be declared as a two-dimensional array of 32-bit floating-point values"
15358        }
15359      ]
15360    },
15361    "CullDistance": {
15362      "core": [
15363        {
15364          "vuid": "VUID-CullDistance-CullDistance-04196",
15365          "text": " The <code>CullDistance</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, <code>Fragment</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel}"
15366        },
15367        {
15368          "vuid": "VUID-CullDistance-CullDistance-04197",
15369          "text": " The variable decorated with <code>CullDistance</code> within the <code>MeshNV</code> or <code>Vertex</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
15370        },
15371        {
15372          "vuid": "VUID-CullDistance-CullDistance-04198",
15373          "text": " The variable decorated with <code>CullDistance</code> within the <code>Fragment</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15374        },
15375        {
15376          "vuid": "VUID-CullDistance-CullDistance-04199",
15377          "text": " The variable decorated with <code>CullDistance</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> not be declared using a {StorageClass} other than <code>Input</code> or <code>Output</code>"
15378        },
15379        {
15380          "vuid": "VUID-CullDistance-CullDistance-04200",
15381          "text": " The variable decorated with <code>CullDistance</code> <strong class=\"purple\">must</strong> be declared as an array of 32-bit floating-point values"
15382        }
15383      ]
15384    },
15385    "CullDistancePerViewNV": {
15386      "(VK_NV_mesh_shader)": [
15387        {
15388          "vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04201",
15389          "text": " The <code>CullDistancePerViewNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> {ExecutionModel}"
15390        },
15391        {
15392          "vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04202",
15393          "text": " The variable decorated with <code>CullDistancePerViewNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
15394        },
15395        {
15396          "vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04203",
15397          "text": " The variable decorated with <code>CullDistancePerViewNV</code> <strong class=\"purple\">must</strong> also be decorated with the <code>PerViewNV</code> decoration."
15398        },
15399        {
15400          "vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04204",
15401          "text": " The variable decorated with <code>CullDistancePerViewNV</code> <strong class=\"purple\">must</strong> be declared as a two-dimensional array of 32-bit floating-point values"
15402        }
15403      ]
15404    },
15405    "DeviceIndex": {
15406      "(VK_VERSION_1_1,VK_KHR_device_group)": [
15407        {
15408          "vuid": "VUID-DeviceIndex-DeviceIndex-04205",
15409          "text": " The variable decorated with <code>DeviceIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15410        },
15411        {
15412          "vuid": "VUID-DeviceIndex-DeviceIndex-04206",
15413          "text": " The variable decorated with <code>DeviceIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15414        }
15415      ]
15416    },
15417    "DrawIndex": {
15418      "(VK_VERSION_1_1,VK_KHR_shader_draw_parameters)": [
15419        {
15420          "vuid": "VUID-DrawIndex-DrawIndex-04207",
15421          "text": " The <code>DrawIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}"
15422        },
15423        {
15424          "vuid": "VUID-DrawIndex-DrawIndex-04208",
15425          "text": " The variable decorated with <code>DrawIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15426        },
15427        {
15428          "vuid": "VUID-DrawIndex-DrawIndex-04209",
15429          "text": " The variable decorated with <code>DrawIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15430        }
15431      ]
15432    },
15433    "FragCoord": {
15434      "core": [
15435        {
15436          "vuid": "VUID-FragCoord-FragCoord-04210",
15437          "text": " The <code>FragCoord</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15438        },
15439        {
15440          "vuid": "VUID-FragCoord-FragCoord-04211",
15441          "text": " The variable decorated with <code>FragCoord</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15442        },
15443        {
15444          "vuid": "VUID-FragCoord-FragCoord-04212",
15445          "text": " The variable decorated with <code>FragCoord</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit floating-point values"
15446        }
15447      ]
15448    },
15449    "FragDepth": {
15450      "core": [
15451        {
15452          "vuid": "VUID-FragDepth-FragDepth-04213",
15453          "text": " The <code>FragDepth</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15454        },
15455        {
15456          "vuid": "VUID-FragDepth-FragDepth-04214",
15457          "text": " The variable decorated with <code>FragDepth</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
15458        },
15459        {
15460          "vuid": "VUID-FragDepth-FragDepth-04215",
15461          "text": " The variable decorated with <code>FragDepth</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value"
15462        },
15463        {
15464          "vuid": "VUID-FragDepth-FragDepth-04216",
15465          "text": " If the shader dynamically writes to the variable decorated with <code>FragDepth</code>, the <code>DepthReplacing</code> {ExecutionMode} <strong class=\"purple\">must</strong> be declared"
15466        }
15467      ]
15468    },
15469    "FragInvocationCountEXT": {
15470      "(VK_EXT_fragment_density_map)": [
15471        {
15472          "vuid": "VUID-FragInvocationCountEXT-FragInvocationCountEXT-04217",
15473          "text": " The <code>FragInvocationCountEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15474        },
15475        {
15476          "vuid": "VUID-FragInvocationCountEXT-FragInvocationCountEXT-04218",
15477          "text": " The variable decorated with <code>FragInvocationCountEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15478        },
15479        {
15480          "vuid": "VUID-FragInvocationCountEXT-FragInvocationCountEXT-04219",
15481          "text": " The variable decorated with <code>FragInvocationCountEXT</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15482        }
15483      ]
15484    },
15485    "FragSizeEXT": {
15486      "(VK_EXT_fragment_density_map)": [
15487        {
15488          "vuid": "VUID-FragSizeEXT-FragSizeEXT-04220",
15489          "text": " The <code>FragSizeEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15490        },
15491        {
15492          "vuid": "VUID-FragSizeEXT-FragSizeEXT-04221",
15493          "text": " The variable decorated with <code>FragSizeEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15494        },
15495        {
15496          "vuid": "VUID-FragSizeEXT-FragSizeEXT-04222",
15497          "text": " The variable decorated with <code>FragSizeEXT</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit integer values"
15498        }
15499      ]
15500    },
15501    "FragStencilRefEXT": {
15502      "(VK_EXT_shader_stencil_export)": [
15503        {
15504          "vuid": "VUID-FragStencilRefEXT-FragStencilRefEXT-04223",
15505          "text": " The <code>FragStencilRefEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15506        },
15507        {
15508          "vuid": "VUID-FragStencilRefEXT-FragStencilRefEXT-04224",
15509          "text": " The variable decorated with <code>FragStencilRefEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
15510        },
15511        {
15512          "vuid": "VUID-FragStencilRefEXT-FragStencilRefEXT-04225",
15513          "text": " The variable decorated with <code>FragStencilRefEXT</code> <strong class=\"purple\">must</strong> be declared as a scalar integer value"
15514        }
15515      ]
15516    },
15517    "FragmentSizeNV": {
15518      "(VK_NV_shading_rate_image)": [
15519        {
15520          "vuid": "VUID-FragmentSizeNV-FragmentSizeNV-04226",
15521          "text": " The <code>FragmentSizeNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15522        },
15523        {
15524          "vuid": "VUID-FragmentSizeNV-FragmentSizeNV-04227",
15525          "text": " The variable decorated with <code>FragmentSizeNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15526        },
15527        {
15528          "vuid": "VUID-FragmentSizeNV-FragmentSizeNV-04228",
15529          "text": " The variable decorated with <code>FragmentSizeNV</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit integer values"
15530        }
15531      ]
15532    },
15533    "FrontFacing": {
15534      "core": [
15535        {
15536          "vuid": "VUID-FrontFacing-FrontFacing-04229",
15537          "text": " The <code>FrontFacing</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15538        },
15539        {
15540          "vuid": "VUID-FrontFacing-FrontFacing-04230",
15541          "text": " The variable decorated with <code>FrontFacing</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15542        },
15543        {
15544          "vuid": "VUID-FrontFacing-FrontFacing-04231",
15545          "text": " The variable decorated with <code>FrontFacing</code> <strong class=\"purple\">must</strong> be declared as a boolean value"
15546        }
15547      ]
15548    },
15549    "FullyCoveredEXT": {
15550      "(VK_EXT_conservative_rasterization)": [
15551        {
15552          "vuid": "VUID-FullyCoveredEXT-FullyCoveredEXT-04232",
15553          "text": " The <code>FullyCoveredEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15554        },
15555        {
15556          "vuid": "VUID-FullyCoveredEXT-FullyCoveredEXT-04233",
15557          "text": " The variable decorated with <code>FullyCoveredEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15558        },
15559        {
15560          "vuid": "VUID-FullyCoveredEXT-FullyCoveredEXT-04234",
15561          "text": " The variable decorated with <code>FullyCoveredEXT</code> <strong class=\"purple\">must</strong> be declared as a boolean value"
15562        }
15563      ],
15564      "(VK_EXT_conservative_rasterization)+(VK_EXT_post_depth_coverage)": [
15565        {
15566          "vuid": "VUID-FullyCoveredEXT-conservativeRasterizationPostDepthCoverage-04235",
15567          "text": " If <code>VkPhysicalDeviceConservativeRasterizationPropertiesEXT</code>::<code>conservativeRasterizationPostDepthCoverage</code> is not supported the <code>PostDepthCoverage</code> {ExecutionMode} <strong class=\"purple\">must</strong> not be declared, when a variable with the <code>FullyCoveredEXT</code> decoration is declared"
15568        }
15569      ]
15570    },
15571    "GlobalInvocationId": {
15572      "core": [
15573        {
15574          "vuid": "VUID-GlobalInvocationId-GlobalInvocationId-04236",
15575          "text": " The <code>GlobalInvocationId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}"
15576        },
15577        {
15578          "vuid": "VUID-GlobalInvocationId-GlobalInvocationId-04237",
15579          "text": " The variable decorated with <code>GlobalInvocationId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15580        },
15581        {
15582          "vuid": "VUID-GlobalInvocationId-GlobalInvocationId-04238",
15583          "text": " The variable decorated with <code>GlobalInvocationId</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values"
15584        }
15585      ]
15586    },
15587    "HelperInvocation": {
15588      "core": [
15589        {
15590          "vuid": "VUID-HelperInvocation-HelperInvocation-04239",
15591          "text": " The <code>HelperInvocation</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15592        },
15593        {
15594          "vuid": "VUID-HelperInvocation-HelperInvocation-04240",
15595          "text": " The variable decorated with <code>HelperInvocation</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15596        },
15597        {
15598          "vuid": "VUID-HelperInvocation-HelperInvocation-04241",
15599          "text": " The variable decorated with <code>HelperInvocation</code> <strong class=\"purple\">must</strong> be declared as a boolean value"
15600        }
15601      ]
15602    },
15603    "HitKindKHR": {
15604      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
15605        {
15606          "vuid": "VUID-HitKindKHR-HitKindKHR-04242",
15607          "text": " The <code>HitKindKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>AnyHitKHR</code> or <code>ClosestHitKHR</code> {ExecutionModel}"
15608        },
15609        {
15610          "vuid": "VUID-HitKindKHR-HitKindKHR-04243",
15611          "text": " The variable decorated with <code>HitKindKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15612        },
15613        {
15614          "vuid": "VUID-HitKindKHR-HitKindKHR-04244",
15615          "text": " The variable decorated with <code>HitKindKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15616        }
15617      ]
15618    },
15619    "HitTNV": {
15620      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
15621        {
15622          "vuid": "VUID-HitTNV-HitTNV-04245",
15623          "text": " The <code>HitTNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>AnyHitNV</code> or <code>ClosestHitNV</code> {ExecutionModel}"
15624        },
15625        {
15626          "vuid": "VUID-HitTNV-HitTNV-04246",
15627          "text": " The variable decorated with <code>HitTNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15628        },
15629        {
15630          "vuid": "VUID-HitTNV-HitTNV-04247",
15631          "text": " The variable decorated with <code>HitTNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value"
15632        }
15633      ]
15634    },
15635    "IncomingRayFlagsKHR": {
15636      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
15637        {
15638          "vuid": "VUID-IncomingRayFlagsKHR-IncomingRayFlagsKHR-04248",
15639          "text": " The <code>IncomingRayFlagsKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> {ExecutionModel}"
15640        },
15641        {
15642          "vuid": "VUID-IncomingRayFlagsKHR-IncomingRayFlagsKHR-04249",
15643          "text": " The variable decorated with <code>IncomingRayFlagsKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15644        },
15645        {
15646          "vuid": "VUID-IncomingRayFlagsKHR-IncomingRayFlagsKHR-04250",
15647          "text": " The variable decorated with <code>IncomingRayFlagsKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15648        }
15649      ]
15650    },
15651    "InstanceCustomIndexKHR": {
15652      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
15653        {
15654          "vuid": "VUID-InstanceCustomIndexKHR-InstanceCustomIndexKHR-04251",
15655          "text": " The <code>InstanceCustomIndexKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel}"
15656        },
15657        {
15658          "vuid": "VUID-InstanceCustomIndexKHR-InstanceCustomIndexKHR-04252",
15659          "text": " The variable decorated with <code>InstanceCustomIndexKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15660        },
15661        {
15662          "vuid": "VUID-InstanceCustomIndexKHR-InstanceCustomIndexKHR-04253",
15663          "text": " The variable decorated with <code>InstanceCustomIndexKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15664        }
15665      ]
15666    },
15667    "InstanceId": {
15668      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
15669        {
15670          "vuid": "VUID-InstanceId-InstanceId-04254",
15671          "text": " The <code>InstanceId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel}"
15672        },
15673        {
15674          "vuid": "VUID-InstanceId-InstanceId-04255",
15675          "text": " The variable decorated with <code>InstanceId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15676        },
15677        {
15678          "vuid": "VUID-InstanceId-InstanceId-04256",
15679          "text": " The variable decorated with <code>InstanceId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15680        }
15681      ]
15682    },
15683    "InvocationId": {
15684      "core": [
15685        {
15686          "vuid": "VUID-InvocationId-InvocationId-04257",
15687          "text": " The <code>InvocationId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TessellationControl</code> or <code>Geometry</code> {ExecutionModel}"
15688        },
15689        {
15690          "vuid": "VUID-InvocationId-InvocationId-04258",
15691          "text": " The variable decorated with <code>InvocationId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15692        },
15693        {
15694          "vuid": "VUID-InvocationId-InvocationId-04259",
15695          "text": " The variable decorated with <code>InvocationId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15696        }
15697      ]
15698    },
15699    "InvocationsPerPixelNV": {
15700      "(VK_NV_shading_rate_image)": [
15701        {
15702          "vuid": "VUID-InvocationsPerPixelNV-InvocationsPerPixelNV-04260",
15703          "text": " The <code>InvocationsPerPixelNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15704        },
15705        {
15706          "vuid": "VUID-InvocationsPerPixelNV-InvocationsPerPixelNV-04261",
15707          "text": " The variable decorated with <code>InvocationsPerPixelNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15708        },
15709        {
15710          "vuid": "VUID-InvocationsPerPixelNV-InvocationsPerPixelNV-04262",
15711          "text": " The variable decorated with <code>InvocationsPerPixelNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15712        }
15713      ]
15714    },
15715    "InstanceIndex": {
15716      "core": [
15717        {
15718          "vuid": "VUID-InstanceIndex-InstanceIndex-04263",
15719          "text": " The <code>InstanceIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code> {ExecutionModel}"
15720        },
15721        {
15722          "vuid": "VUID-InstanceIndex-InstanceIndex-04264",
15723          "text": " The variable decorated with <code>InstanceIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15724        },
15725        {
15726          "vuid": "VUID-InstanceIndex-InstanceIndex-04265",
15727          "text": " The variable decorated with <code>InstanceIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15728        }
15729      ]
15730    },
15731    "LaunchIDKHR": {
15732      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
15733        {
15734          "vuid": "VUID-LaunchIDKHR-LaunchIDKHR-04266",
15735          "text": " The <code>LaunchIDKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>RayGenerationKHR</code>, <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> {ExecutionModel}"
15736        },
15737        {
15738          "vuid": "VUID-LaunchIDKHR-LaunchIDKHR-04267",
15739          "text": " The variable decorated with <code>LaunchIDKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15740        },
15741        {
15742          "vuid": "VUID-LaunchIDKHR-LaunchIDKHR-04268",
15743          "text": " The variable decorated with <code>LaunchIDKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values"
15744        }
15745      ]
15746    },
15747    "LaunchSizeKHR": {
15748      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
15749        {
15750          "vuid": "VUID-LaunchSizeKHR-LaunchSizeKHR-04269",
15751          "text": " The <code>LaunchSizeKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>RayGenerationKHR</code>, <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> {ExecutionModel}"
15752        },
15753        {
15754          "vuid": "VUID-LaunchSizeKHR-LaunchSizeKHR-04270",
15755          "text": " The variable decorated with <code>LaunchSizeKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15756        },
15757        {
15758          "vuid": "VUID-LaunchSizeKHR-LaunchSizeKHR-04271",
15759          "text": " The variable decorated with <code>LaunchSizeKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values"
15760        }
15761      ]
15762    },
15763    "Layer": {
15764      "core": [
15765        {
15766          "vuid": "VUID-Layer-Layer-04272",
15767          "text": " The <code>Layer</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationEvaluation</code>, <code>Geometry</code>, or <code>Fragment</code> {ExecutionModel}"
15768        },
15769        {
15770          "vuid": "VUID-Layer-Layer-04274",
15771          "text": " The variable decorated with <code>Layer</code> within the <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
15772        },
15773        {
15774          "vuid": "VUID-Layer-Layer-04275",
15775          "text": " The variable decorated with <code>Layer</code> within the <code>Fragment</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15776        },
15777        {
15778          "vuid": "VUID-Layer-Layer-04276",
15779          "text": " The variable decorated with <code>Layer</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15780        }
15781      ],
15782      "(VK_VERSION_1_2)": [
15783        {
15784          "vuid": "VUID-Layer-Layer-04273",
15785          "text": " If the <a href=\"#features-shaderOutputLayer\">shaderOutputLayer</a> feature is not enabled then the <code>Layer</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Geometry</code> or <code>Fragment</code> {ExecutionModel}"
15786        }
15787      ]
15788    },
15789    "LayerPerViewNV": {
15790      "(VK_NV_mesh_shader)": [
15791        {
15792          "vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04277",
15793          "text": " The <code>LayerPerViewNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> {ExecutionModel}"
15794        },
15795        {
15796          "vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04278",
15797          "text": " The variable decorated with <code>LayerPerViewNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
15798        },
15799        {
15800          "vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04279",
15801          "text": " The variable decorated with <code>LayerPerViewNV</code> <strong class=\"purple\">must</strong> also be decorated with the <code>PerViewNV</code> decoration."
15802        },
15803        {
15804          "vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04280",
15805          "text": " The variable decorated with <code>LayerPerViewNV</code> <strong class=\"purple\">must</strong> be declared as an array of scalar 32-bit integer values"
15806        }
15807      ]
15808    },
15809    "LocalInvocationId": {
15810      "core": [
15811        {
15812          "vuid": "VUID-LocalInvocationId-LocalInvocationId-04281",
15813          "text": " The <code>LocalInvocationId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}"
15814        },
15815        {
15816          "vuid": "VUID-LocalInvocationId-LocalInvocationId-04282",
15817          "text": " The variable decorated with <code>LocalInvocationId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15818        },
15819        {
15820          "vuid": "VUID-LocalInvocationId-LocalInvocationId-04283",
15821          "text": " The variable decorated with <code>LocalInvocationId</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values"
15822        }
15823      ]
15824    },
15825    "LocalInvocationIndex": {
15826      "core": [
15827        {
15828          "vuid": "VUID-LocalInvocationIndex-LocalInvocationIndex-04284",
15829          "text": " The <code>LocalInvocationIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}"
15830        },
15831        {
15832          "vuid": "VUID-LocalInvocationIndex-LocalInvocationIndex-04285",
15833          "text": " The variable decorated with <code>LocalInvocationIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15834        },
15835        {
15836          "vuid": "VUID-LocalInvocationIndex-LocalInvocationIndex-04286",
15837          "text": " The variable decorated with <code>LocalInvocationIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15838        }
15839      ]
15840    },
15841    "MeshViewCountNV": {
15842      "(VK_NV_mesh_shader)": [
15843        {
15844          "vuid": "VUID-MeshViewCountNV-MeshViewCountNV-04287",
15845          "text": " The <code>MeshViewCountNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> or <code>TaskNV</code> {ExecutionModel}"
15846        },
15847        {
15848          "vuid": "VUID-MeshViewCountNV-MeshViewCountNV-04288",
15849          "text": " The variable decorated with <code>MeshViewCountNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15850        },
15851        {
15852          "vuid": "VUID-MeshViewCountNV-MeshViewCountNV-04289",
15853          "text": " The variable decorated with <code>MeshViewCountNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15854        }
15855      ]
15856    },
15857    "MeshViewIndicesNV": {
15858      "(VK_NV_mesh_shader)": [
15859        {
15860          "vuid": "VUID-MeshViewIndicesNV-MeshViewIndicesNV-04290",
15861          "text": " The <code>MeshViewIndicesNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> or <code>TaskNV</code> {ExecutionModel}"
15862        },
15863        {
15864          "vuid": "VUID-MeshViewIndicesNV-MeshViewIndicesNV-04291",
15865          "text": " The variable decorated with <code>MeshViewIndicesNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15866        },
15867        {
15868          "vuid": "VUID-MeshViewIndicesNV-MeshViewIndicesNV-04292",
15869          "text": " The variable decorated with <code>MeshViewIndicesNV</code> <strong class=\"purple\">must</strong> be declared as an array of scalar 32-bit integer values"
15870        }
15871      ]
15872    },
15873    "NumSubgroups": {
15874      "(VK_VERSION_1_1)": [
15875        {
15876          "vuid": "VUID-NumSubgroups-NumSubgroups-04293",
15877          "text": " The <code>NumSubgroups</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}"
15878        },
15879        {
15880          "vuid": "VUID-NumSubgroups-NumSubgroups-04294",
15881          "text": " The variable decorated with <code>NumSubgroups</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15882        },
15883        {
15884          "vuid": "VUID-NumSubgroups-NumSubgroups-04295",
15885          "text": " The variable decorated with <code>NumSubgroups</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15886        }
15887      ]
15888    },
15889    "NumWorkgroups": {
15890      "core": [
15891        {
15892          "vuid": "VUID-NumWorkgroups-NumWorkgroups-04296",
15893          "text": " The <code>NumWorkgroups</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code> {ExecutionModel}"
15894        },
15895        {
15896          "vuid": "VUID-NumWorkgroups-NumWorkgroups-04297",
15897          "text": " The variable decorated with <code>NumWorkgroups</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15898        },
15899        {
15900          "vuid": "VUID-NumWorkgroups-NumWorkgroups-04298",
15901          "text": " The variable decorated with <code>NumWorkgroups</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values"
15902        }
15903      ]
15904    },
15905    "ObjectRayDirectionKHR": {
15906      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
15907        {
15908          "vuid": "VUID-ObjectRayDirectionKHR-ObjectRayDirectionKHR-04299",
15909          "text": " The <code>ObjectRayDirectionKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel}"
15910        },
15911        {
15912          "vuid": "VUID-ObjectRayDirectionKHR-ObjectRayDirectionKHR-04300",
15913          "text": " The variable decorated with <code>ObjectRayDirectionKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15914        },
15915        {
15916          "vuid": "VUID-ObjectRayDirectionKHR-ObjectRayDirectionKHR-04301",
15917          "text": " The variable decorated with <code>ObjectRayDirectionKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values"
15918        }
15919      ]
15920    },
15921    "ObjectRayOriginKHR": {
15922      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
15923        {
15924          "vuid": "VUID-ObjectRayOriginKHR-ObjectRayOriginKHR-04302",
15925          "text": " The <code>ObjectRayOriginKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel}"
15926        },
15927        {
15928          "vuid": "VUID-ObjectRayOriginKHR-ObjectRayOriginKHR-04303",
15929          "text": " The variable decorated with <code>ObjectRayOriginKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15930        },
15931        {
15932          "vuid": "VUID-ObjectRayOriginKHR-ObjectRayOriginKHR-04304",
15933          "text": " The variable decorated with <code>ObjectRayOriginKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values"
15934        }
15935      ]
15936    },
15937    "ObjectToWorldKHR": {
15938      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
15939        {
15940          "vuid": "VUID-ObjectToWorldKHR-ObjectToWorldKHR-04305",
15941          "text": " The <code>ObjectToWorldKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel}"
15942        },
15943        {
15944          "vuid": "VUID-ObjectToWorldKHR-ObjectToWorldKHR-04306",
15945          "text": " The variable decorated with <code>ObjectToWorldKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15946        },
15947        {
15948          "vuid": "VUID-ObjectToWorldKHR-ObjectToWorldKHR-04307",
15949          "text": " The variable decorated with <code>ObjectToWorldKHR</code> <strong class=\"purple\">must</strong> be declared as a matrix with four columns of three-component vectors of 32-bit floating-point values"
15950        }
15951      ]
15952    },
15953    "PatchVertices": {
15954      "core": [
15955        {
15956          "vuid": "VUID-PatchVertices-PatchVertices-04308",
15957          "text": " The <code>PatchVertices</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TessellationControl</code> or <code>TessellationEvaluation</code> {ExecutionModel}"
15958        },
15959        {
15960          "vuid": "VUID-PatchVertices-PatchVertices-04309",
15961          "text": " The variable decorated with <code>PatchVertices</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15962        },
15963        {
15964          "vuid": "VUID-PatchVertices-PatchVertices-04310",
15965          "text": " The variable decorated with <code>PatchVertices</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
15966        }
15967      ]
15968    },
15969    "PointCoord": {
15970      "core": [
15971        {
15972          "vuid": "VUID-PointCoord-PointCoord-04311",
15973          "text": " The <code>PointCoord</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
15974        },
15975        {
15976          "vuid": "VUID-PointCoord-PointCoord-04312",
15977          "text": " The variable decorated with <code>PointCoord</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
15978        },
15979        {
15980          "vuid": "VUID-PointCoord-PointCoord-04313",
15981          "text": " The variable decorated with <code>PointCoord</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values"
15982        }
15983      ]
15984    },
15985    "PointSize": {
15986      "core": [
15987        {
15988          "vuid": "VUID-PointSize-PointSize-04314",
15989          "text": " The <code>PointSize</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel}"
15990        },
15991        {
15992          "vuid": "VUID-PointSize-PointSize-04315",
15993          "text": " The variable decorated with <code>PointSize</code> within the <code>MeshNV</code> or <code>Vertex</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
15994        },
15995        {
15996          "vuid": "VUID-PointSize-PointSize-04316",
15997          "text": " The variable decorated with <code>PointSize</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> not be declared using a {StorageClass} other than <code>Input</code> or <code>Output</code>"
15998        },
15999        {
16000          "vuid": "VUID-PointSize-PointSize-04317",
16001          "text": " The variable decorated with <code>PointSize</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value"
16002        }
16003      ]
16004    },
16005    "Position": {
16006      "core": [
16007        {
16008          "vuid": "VUID-Position-Position-04318",
16009          "text": " The <code>Position</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel}"
16010        },
16011        {
16012          "vuid": "VUID-Position-Position-04319",
16013          "text": " The variable decorated with <code>Position</code> within <code>MeshNV</code> or <code>Vertex</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
16014        },
16015        {
16016          "vuid": "VUID-Position-Position-04320",
16017          "text": " The variable decorated with <code>Position</code> within <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> not be declared using a {StorageClass} other than <code>Input</code> or <code>Output</code>"
16018        },
16019        {
16020          "vuid": "VUID-Position-Position-04321",
16021          "text": " The variable decorated with <code>Position</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit floating-point values"
16022        }
16023      ]
16024    },
16025    "PositionPerViewNV": {
16026      "(VK_NVX_multiview_per_view_attributes)": [
16027        {
16028          "vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04322",
16029          "text": " The <code>PositionPerViewNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel}"
16030        },
16031        {
16032          "vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04323",
16033          "text": " The variable decorated with <code>PositionPerViewNV</code> within the <code>Vertex</code>, or <code>MeshNV</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
16034        },
16035        {
16036          "vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04324",
16037          "text": " The variable decorated with <code>PositionPerViewNV</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> not be declared using a {StorageClass} other than <code>Input</code> or <code>Output</code>"
16038        },
16039        {
16040          "vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04325",
16041          "text": " The variable decorated with <code>PositionPerViewNV</code> <strong class=\"purple\">must</strong> be declared as an array of four-component vector of 32-bit floating-point values with at least as many elements as the maximum view in the subpass&#8217;s view mask plus one"
16042        },
16043        {
16044          "vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04326",
16045          "text": " The array variable decorated with <code>PositionPerViewNV</code> <strong class=\"purple\">must</strong> only be indexed by a constant or specialization constant"
16046        }
16047      ]
16048    },
16049    "PrimitiveCountNV": {
16050      "(VK_NV_mesh_shader)": [
16051        {
16052          "vuid": "VUID-PrimitiveCountNV-PrimitiveCountNV-04327",
16053          "text": " The <code>PrimitiveCountNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> {ExecutionModel}"
16054        },
16055        {
16056          "vuid": "VUID-PrimitiveCountNV-PrimitiveCountNV-04328",
16057          "text": " The variable decorated with <code>PrimitiveCountNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
16058        },
16059        {
16060          "vuid": "VUID-PrimitiveCountNV-PrimitiveCountNV-04329",
16061          "text": " The variable decorated with <code>PrimitiveCountNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16062        }
16063      ]
16064    },
16065    "PrimitiveId": {
16066      "core": [
16067        {
16068          "vuid": "VUID-PrimitiveId-PrimitiveId-04330",
16069          "text": " The <code>PrimitiveId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, <code>Geometry</code>, or <code>Fragment</code> {ExecutionModel}"
16070        },
16071        {
16072          "vuid": "VUID-PrimitiveId-Fragment-04331",
16073          "text": " If pipeline contains both the <code>Fragment</code> and <code>Geometry</code> {ExecutionModel} and a variable decorated with <code>PrimitiveId</code> is read from <code>Fragment</code> shader, then the <code>Geometry</code> shader <strong class=\"purple\">must</strong> write to the output variables decorated with <code>PrimitiveId</code> in all execution paths"
16074        },
16075        {
16076          "vuid": "VUID-PrimitiveId-Fragment-04332",
16077          "text": " If pipeline contains both the <code>Fragment</code> and <code>MeshNV</code> {ExecutionModel} and a variable decorated with <code>PrimitiveId</code> is read from <code>Fragment</code> shader, then the <code>MeshNV</code> shader <strong class=\"purple\">must</strong> write to the output variables decorated with <code>PrimitiveId</code> in all execution paths"
16078        },
16079        {
16080          "vuid": "VUID-PrimitiveId-Fragment-04333",
16081          "text": " If <code>Fragment</code> {ExecutionModel} contains a variable decorated with <code>PrimitiveId</code> either the <code>Geometry</code> or <code>Tessellation</code> capability <strong class=\"purple\">must</strong> also be declared"
16082        },
16083        {
16084          "vuid": "VUID-PrimitiveId-PrimitiveId-04334",
16085          "text": " The variable decorated with <code>PrimitiveId</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, <code>Fragment</code>, <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16086        },
16087        {
16088          "vuid": "VUID-PrimitiveId-PrimitiveId-04335",
16089          "text": " The variable decorated with <code>PrimitiveId</code> within the <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> or <code>Output</code> {StorageClass}"
16090        },
16091        {
16092          "vuid": "VUID-PrimitiveId-PrimitiveId-04336",
16093          "text": " The variable decorated with <code>PrimitiveId</code> within the <code>MeshNV</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
16094        },
16095        {
16096          "vuid": "VUID-PrimitiveId-PrimitiveId-04337",
16097          "text": " The variable decorated with <code>PrimitiveId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16098        }
16099      ]
16100    },
16101    "PrimitiveIndicesNV": {
16102      "(VK_NV_mesh_shader)": [
16103        {
16104          "vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04338",
16105          "text": " The <code>PrimitiveIndicesNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> {ExecutionModel}"
16106        },
16107        {
16108          "vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04339",
16109          "text": " The variable decorated with <code>PrimitiveIndicesNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
16110        },
16111        {
16112          "vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04340",
16113          "text": " The variable decorated with <code>PrimitiveIndicesNV</code> <strong class=\"purple\">must</strong> be declared as an array of scalar 32-bit integer values"
16114        },
16115        {
16116          "vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04341",
16117          "text": " All index values of the array decorated with <code>PrimitiveIndicesNV</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0, N-1]</span>, where <span class=\"eq\">N</span> is the value specified by the <code>OutputVertices</code> {ExecutionMode}"
16118        },
16119        {
16120          "vuid": "VUID-PrimitiveIndicesNV-OutputPoints-04342",
16121          "text": " If the {ExecutionMode} is <code>OutputPoints</code>, then the array decorated with <code>PrimitiveIndicesNV</code> must be the size of the value specified by <code>OutputPrimitivesNV</code>"
16122        },
16123        {
16124          "vuid": "VUID-PrimitiveIndicesNV-OutputLinesNV-04343",
16125          "text": " If the {ExecutionMode} is <code>OutputLinesNV</code>, then the array decorated with <code>PrimitiveIndicesNV</code> must be the size of two times the value specified by <code>OutputPrimitivesNV</code>"
16126        },
16127        {
16128          "vuid": "VUID-PrimitiveIndicesNV-OutputTrianglesNV-04344",
16129          "text": " If the {ExecutionMode} is <code>OutputTrianglesNV</code>, then the array decorated with <code>PrimitiveIndicesNV</code> must be the size of three times the value specified by <code>OutputPrimitivesNV</code>"
16130        }
16131      ]
16132    },
16133    "PrimitiveShadingRateKHR": {
16134      "(VK_KHR_fragment_shading_rate)": [
16135        {
16136          "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04484",
16137          "text": " The <code>PrimitiveShadingRateKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, or <code>Geometry</code> {ExecutionModel}"
16138        },
16139        {
16140          "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04485",
16141          "text": " The variable decorated with <code>PrimitiveShadingRateKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
16142        },
16143        {
16144          "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04486",
16145          "text": " The variable decorated with <code>PrimitiveShadingRateKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16146        },
16147        {
16148          "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04487",
16149          "text": " The value written to <code>PrimitiveShadingRateKHR</code> <strong class=\"purple\">must</strong> include no more than one of <code>Vertical2Pixels</code> and <code>Vertical4Pixels</code>"
16150        },
16151        {
16152          "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04488",
16153          "text": " The value written to <code>PrimitiveShadingRateKHR</code> <strong class=\"purple\">must</strong> include no more than one of <code>Horizontal2Pixels</code> and <code>Horizontal4Pixels</code>"
16154        },
16155        {
16156          "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04489",
16157          "text": " The value written to <code>PrimitiveShadingRateKHR</code> <strong class=\"purple\">must</strong> not have any bits set other than those defined by <strong>Fragment Shading Rate Flags</strong> enumerants in the SPIR-V specification"
16158        }
16159      ]
16160    },
16161    "RayGeometryIndexKHR": {
16162      "(VK_KHR_ray_tracing)": [
16163        {
16164          "vuid": "VUID-RayGeometryIndexKHR-RayGeometryIndexKHR-04345",
16165          "text": " The <code>RayGeometryIndexKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel}"
16166        },
16167        {
16168          "vuid": "VUID-RayGeometryIndexKHR-RayGeometryIndexKHR-04346",
16169          "text": " The variable decorated with <code>RayGeometryIndexKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16170        },
16171        {
16172          "vuid": "VUID-RayGeometryIndexKHR-RayGeometryIndexKHR-04347",
16173          "text": " The variable decorated with <code>RayGeometryIndexKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16174        }
16175      ]
16176    },
16177    "RayTmaxKHR": {
16178      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
16179        {
16180          "vuid": "VUID-RayTmaxKHR-RayTmaxKHR-04348",
16181          "text": " The <code>RayTmaxKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> {ExecutionModel}"
16182        },
16183        {
16184          "vuid": "VUID-RayTmaxKHR-RayTmaxKHR-04349",
16185          "text": " The variable decorated with <code>RayTmaxKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16186        },
16187        {
16188          "vuid": "VUID-RayTmaxKHR-RayTmaxKHR-04350",
16189          "text": " The variable decorated with <code>RayTmaxKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value"
16190        }
16191      ]
16192    },
16193    "RayTminKHR": {
16194      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
16195        {
16196          "vuid": "VUID-RayTminKHR-RayTminKHR-04351",
16197          "text": " The <code>RayTminKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> {ExecutionModel}"
16198        },
16199        {
16200          "vuid": "VUID-RayTminKHR-RayTminKHR-04352",
16201          "text": " The variable decorated with <code>RayTminKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16202        },
16203        {
16204          "vuid": "VUID-RayTminKHR-RayTminKHR-04353",
16205          "text": " The variable decorated with <code>RayTminKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value"
16206        }
16207      ]
16208    },
16209    "SampleId": {
16210      "core": [
16211        {
16212          "vuid": "VUID-SampleId-SampleId-04354",
16213          "text": " The <code>SampleId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
16214        },
16215        {
16216          "vuid": "VUID-SampleId-SampleId-04355",
16217          "text": " The variable decorated with <code>SampleId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16218        },
16219        {
16220          "vuid": "VUID-SampleId-SampleId-04356",
16221          "text": " The variable decorated with <code>SampleId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16222        }
16223      ]
16224    },
16225    "SampleMask": {
16226      "core": [
16227        {
16228          "vuid": "VUID-SampleMask-SampleMask-04357",
16229          "text": " The <code>SampleMask</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
16230        },
16231        {
16232          "vuid": "VUID-SampleMask-SampleMask-04358",
16233          "text": " The variable decorated with <code>SampleMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> or <code>Output</code> {StorageClass}"
16234        },
16235        {
16236          "vuid": "VUID-SampleMask-SampleMask-04359",
16237          "text": " The variable decorated with <code>SampleMask</code> <strong class=\"purple\">must</strong> be declared as an array of 32-bit integer values"
16238        }
16239      ]
16240    },
16241    "SamplePosition": {
16242      "core": [
16243        {
16244          "vuid": "VUID-SamplePosition-SamplePosition-04360",
16245          "text": " The <code>SamplePosition</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
16246        },
16247        {
16248          "vuid": "VUID-SamplePosition-SamplePosition-04361",
16249          "text": " The variable decorated with <code>SamplePosition</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16250        },
16251        {
16252          "vuid": "VUID-SamplePosition-SamplePosition-04362",
16253          "text": " The variable decorated with <code>SamplePosition</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values"
16254        }
16255      ]
16256    },
16257    "ShadingRateKHR": {
16258      "(VK_KHR_fragment_shading_rate)": [
16259        {
16260          "vuid": "VUID-ShadingRateKHR-ShadingRateKHR-04490",
16261          "text": " The <code>ShadingRateKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}"
16262        },
16263        {
16264          "vuid": "VUID-ShadingRateKHR-ShadingRateKHR-04491",
16265          "text": " The variable decorated with <code>ShadingRateKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16266        },
16267        {
16268          "vuid": "VUID-ShadingRateKHR-ShadingRateKHR-04492",
16269          "text": " The variable decorated with <code>ShadingRateKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16270        }
16271      ]
16272    },
16273    "SMCountNV": {
16274      "(VK_NV_shader_sm_builtins)": [
16275        {
16276          "vuid": "VUID-SMCountNV-SMCountNV-04363",
16277          "text": " The variable decorated with <code>SMCountNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16278        },
16279        {
16280          "vuid": "VUID-SMCountNV-SMCountNV-04364",
16281          "text": " The variable decorated with <code>SMCountNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16282        }
16283      ]
16284    },
16285    "SMIDNV": {
16286      "(VK_NV_shader_sm_builtins)": [
16287        {
16288          "vuid": "VUID-SMIDNV-SMIDNV-04365",
16289          "text": " The variable decorated with <code>SMIDNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16290        },
16291        {
16292          "vuid": "VUID-SMIDNV-SMIDNV-04366",
16293          "text": " The variable decorated with <code>SMIDNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16294        }
16295      ]
16296    },
16297    "SubgroupId": {
16298      "(VK_VERSION_1_1)": [
16299        {
16300          "vuid": "VUID-SubgroupId-SubgroupId-04367",
16301          "text": " The <code>SubgroupId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}"
16302        },
16303        {
16304          "vuid": "VUID-SubgroupId-SubgroupId-04368",
16305          "text": " The variable decorated with <code>SubgroupId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16306        },
16307        {
16308          "vuid": "VUID-SubgroupId-SubgroupId-04369",
16309          "text": " The variable decorated with <code>SubgroupId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16310        }
16311      ]
16312    },
16313    "SubgroupEqMask": {
16314      "(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [
16315        {
16316          "vuid": "VUID-SubgroupEqMask-SubgroupEqMask-04370",
16317          "text": " The variable decorated with <code>SubgroupEqMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16318        },
16319        {
16320          "vuid": "VUID-SubgroupEqMask-SubgroupEqMask-04371",
16321          "text": " The variable decorated with <code>SubgroupEqMask</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit integer values"
16322        }
16323      ]
16324    },
16325    "SubgroupGeMask": {
16326      "(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [
16327        {
16328          "vuid": "VUID-SubgroupGeMask-SubgroupGeMask-04372",
16329          "text": " The variable decorated with <code>SubgroupGeMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16330        },
16331        {
16332          "vuid": "VUID-SubgroupGeMask-SubgroupGeMask-04373",
16333          "text": " The variable decorated with <code>SubgroupGeMask</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit integer values"
16334        }
16335      ]
16336    },
16337    "SubgroupGtMask": {
16338      "(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [
16339        {
16340          "vuid": "VUID-SubgroupGtMask-SubgroupGtMask-04374",
16341          "text": " The variable decorated with <code>SubgroupGtMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16342        },
16343        {
16344          "vuid": "VUID-SubgroupGtMask-SubgroupGtMask-04375",
16345          "text": " The variable decorated with <code>SubgroupGtMask</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit integer values"
16346        }
16347      ]
16348    },
16349    "SubgroupLeMask": {
16350      "(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [
16351        {
16352          "vuid": "VUID-SubgroupLeMask-SubgroupLeMask-04376",
16353          "text": " The variable decorated with <code>SubgroupLeMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16354        },
16355        {
16356          "vuid": "VUID-SubgroupLeMask-SubgroupLeMask-04377",
16357          "text": " The variable decorated with <code>SubgroupLeMask</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit integer values"
16358        }
16359      ]
16360    },
16361    "SubgroupLtMask": {
16362      "(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [
16363        {
16364          "vuid": "VUID-SubgroupLtMask-SubgroupLtMask-04378",
16365          "text": " The variable decorated with <code>SubgroupLtMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16366        },
16367        {
16368          "vuid": "VUID-SubgroupLtMask-SubgroupLtMask-04379",
16369          "text": " The variable decorated with <code>SubgroupLtMask</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit integer values"
16370        }
16371      ]
16372    },
16373    "SubgroupLocalInvocationId": {
16374      "(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [
16375        {
16376          "vuid": "VUID-SubgroupLocalInvocationId-SubgroupLocalInvocationId-04380",
16377          "text": " The variable decorated with <code>SubgroupLocalInvocationId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16378        },
16379        {
16380          "vuid": "VUID-SubgroupLocalInvocationId-SubgroupLocalInvocationId-04381",
16381          "text": " The variable decorated with <code>SubgroupLocalInvocationId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16382        }
16383      ]
16384    },
16385    "SubgroupSize": {
16386      "(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [
16387        {
16388          "vuid": "VUID-SubgroupSize-SubgroupSize-04382",
16389          "text": " The variable decorated with <code>SubgroupSize</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16390        },
16391        {
16392          "vuid": "VUID-SubgroupSize-SubgroupSize-04383",
16393          "text": " The variable decorated with <code>SubgroupSize</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16394        }
16395      ]
16396    },
16397    "TaskCountNV": {
16398      "(VK_NV_mesh_shader)": [
16399        {
16400          "vuid": "VUID-TaskCountNV-TaskCountNV-04384",
16401          "text": " The <code>TaskCountNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TaskNV</code> {ExecutionModel}"
16402        },
16403        {
16404          "vuid": "VUID-TaskCountNV-TaskCountNV-04385",
16405          "text": " The variable decorated with <code>TaskCountNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
16406        },
16407        {
16408          "vuid": "VUID-TaskCountNV-TaskCountNV-04386",
16409          "text": " The variable decorated with <code>TaskCountNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16410        }
16411      ]
16412    },
16413    "TessCoord": {
16414      "core": [
16415        {
16416          "vuid": "VUID-TessCoord-TessCoord-04387",
16417          "text": " The <code>TessCoord</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TessellationEvaluation</code> {ExecutionModel}"
16418        },
16419        {
16420          "vuid": "VUID-TessCoord-TessCoord-04388",
16421          "text": " The variable decorated with <code>TessCoord</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16422        },
16423        {
16424          "vuid": "VUID-TessCoord-TessCoord-04389",
16425          "text": " The variable decorated with <code>TessCoord</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values"
16426        }
16427      ]
16428    },
16429    "TessLevelOuter": {
16430      "core": [
16431        {
16432          "vuid": "VUID-TessLevelOuter-TessLevelOuter-04390",
16433          "text": " The <code>TessLevelOuter</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TessellationControl</code> or <code>TessellationEvaluation</code> {ExecutionModel}"
16434        },
16435        {
16436          "vuid": "VUID-TessLevelOuter-TessLevelOuter-04391",
16437          "text": " The variable decorated with <code>TessLevelOuter</code> within the <code>TessellationControl</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
16438        },
16439        {
16440          "vuid": "VUID-TessLevelOuter-TessLevelOuter-04392",
16441          "text": " The variable decorated with <code>TessLevelOuter</code> within the <code>TessellationEvaluation</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16442        },
16443        {
16444          "vuid": "VUID-TessLevelOuter-TessLevelOuter-04393",
16445          "text": " The variable decorated with <code>TessLevelOuter</code> <strong class=\"purple\">must</strong> be declared as an array of size four, containing 32-bit floating-point values"
16446        }
16447      ]
16448    },
16449    "TessLevelInner": {
16450      "core": [
16451        {
16452          "vuid": "VUID-TessLevelInner-TessLevelInner-04394",
16453          "text": " The <code>TessLevelInner</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TessellationControl</code> or <code>TessellationEvaluation</code> {ExecutionModel}"
16454        },
16455        {
16456          "vuid": "VUID-TessLevelInner-TessLevelInner-04395",
16457          "text": " The variable decorated with <code>TessLevelInner</code> within the <code>TessellationControl</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
16458        },
16459        {
16460          "vuid": "VUID-TessLevelInner-TessLevelInner-04396",
16461          "text": " The variable decorated with <code>TessLevelInner</code> within the <code>TessellationEvaluation</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16462        },
16463        {
16464          "vuid": "VUID-TessLevelInner-TessLevelInner-04397",
16465          "text": " The variable decorated with <code>TessLevelInner</code> <strong class=\"purple\">must</strong> be declared as an array of size two, containing 32-bit floating-point values"
16466        }
16467      ]
16468    },
16469    "VertexIndex": {
16470      "core": [
16471        {
16472          "vuid": "VUID-VertexIndex-VertexIndex-04398",
16473          "text": " The <code>VertexIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code> {ExecutionModel}"
16474        },
16475        {
16476          "vuid": "VUID-VertexIndex-VertexIndex-04399",
16477          "text": " The variable decorated with <code>VertexIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16478        },
16479        {
16480          "vuid": "VUID-VertexIndex-VertexIndex-04400",
16481          "text": " The variable decorated with <code>VertexIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16482        }
16483      ]
16484    },
16485    "ViewIndex": {
16486      "(VK_VERSION_1_1,VK_KHR_multiview)": [
16487        {
16488          "vuid": "VUID-ViewIndex-ViewIndex-04401",
16489          "text": " The <code>ViewIndex</code> decoration <strong class=\"purple\">must</strong> not be used within the <code>GLCompute</code> {ExecutionModel}"
16490        },
16491        {
16492          "vuid": "VUID-ViewIndex-ViewIndex-04402",
16493          "text": " The variable decorated with <code>ViewIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16494        },
16495        {
16496          "vuid": "VUID-ViewIndex-ViewIndex-04403",
16497          "text": " The variable decorated with <code>ViewIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16498        }
16499      ]
16500    },
16501    "ViewportIndex": {
16502      "core": [
16503        {
16504          "vuid": "VUID-ViewportIndex-ViewportIndex-04404",
16505          "text": " The <code>ViewportIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationEvaluation</code>, <code>Geometry</code>, or <code>Fragment</code> {ExecutionModel}"
16506        },
16507        {
16508          "vuid": "VUID-ViewportIndex-ViewportIndex-04406",
16509          "text": " The variable decorated with <code>ViewportIndex</code> within the <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
16510        },
16511        {
16512          "vuid": "VUID-ViewportIndex-ViewportIndex-04407",
16513          "text": " The variable decorated with <code>ViewportIndex</code> within the <code>Fragment</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16514        },
16515        {
16516          "vuid": "VUID-ViewportIndex-ViewportIndex-04408",
16517          "text": " The variable decorated with <code>ViewportIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16518        }
16519      ],
16520      "(VK_VERSION_1_2)": [
16521        {
16522          "vuid": "VUID-ViewportIndex-ViewportIndex-04405",
16523          "text": " If the <a href=\"#features-shaderOutputViewportIndex\">shaderOutputViewportIndex</a> feature is not enabled then the <code>ViewportIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Geometry</code> or <code>Fragment</code> {ExecutionModel}"
16524        }
16525      ]
16526    },
16527    "ViewportMaskNV": {
16528      "(VK_NV_viewport_array2)": [
16529        {
16530          "vuid": "VUID-ViewportMaskNV-ViewportMaskNV-04409",
16531          "text": " The <code>ViewportMaskNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code>, <code>MeshNV</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel}"
16532        },
16533        {
16534          "vuid": "VUID-ViewportMaskNV-ViewportMaskNV-04410",
16535          "text": " The variable decorated with <code>ViewportMaskNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
16536        },
16537        {
16538          "vuid": "VUID-ViewportMaskNV-ViewportMaskNV-04411",
16539          "text": " The variable decorated with <code>ViewportMaskNV</code> <strong class=\"purple\">must</strong> be declared as an array of 32-bit integer values"
16540        }
16541      ]
16542    },
16543    "ViewportMaskPerViewNV": {
16544      "(VK_NVX_multiview_per_view_attributes+VK_NV_viewport_array2)": [
16545        {
16546          "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04412",
16547          "text": " The <code>ViewportMaskPerViewNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code>, <code>MeshNV</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel}"
16548        },
16549        {
16550          "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04413",
16551          "text": " The variable decorated with <code>ViewportMaskPerViewNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}"
16552        },
16553        {
16554          "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04414",
16555          "text": " The variable decorated with <code>ViewportMaskPerViewNV</code> <strong class=\"purple\">must</strong> be declared as an array of 32-bit integer values"
16556        },
16557        {
16558          "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04415",
16559          "text": " The array decorated with <code>ViewportMaskPerViewNV</code> <strong class=\"purple\">must</strong> be a size less than or equal to 32"
16560        },
16561        {
16562          "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04416",
16563          "text": " The array decorated with <code>ViewportMaskPerViewNV</code> <strong class=\"purple\">must</strong> be a size greater than the maximum view in the subpass&#8217;s view mask"
16564        },
16565        {
16566          "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04417",
16567          "text": " The array variable decorated with <code>ViewportMaskPerViewNV</code> <strong class=\"purple\">must</strong> only be indexed by a constant or specialization constant."
16568        }
16569      ]
16570    },
16571    "WarpsPerSMNV": {
16572      "(VK_NV_shader_sm_builtins)": [
16573        {
16574          "vuid": "VUID-WarpsPerSMNV-WarpsPerSMNV-04418",
16575          "text": " The variable decorated with <code>WarpsPerSMNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16576        },
16577        {
16578          "vuid": "VUID-WarpsPerSMNV-WarpsPerSMNV-04419",
16579          "text": " The variable decorated with <code>WarpsPerSMNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16580        }
16581      ]
16582    },
16583    "WarpIDNV": {
16584      "(VK_NV_shader_sm_builtins)": [
16585        {
16586          "vuid": "VUID-WarpIDNV-WarpIDNV-04420",
16587          "text": " The variable decorated with <code>WarpIDNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16588        },
16589        {
16590          "vuid": "VUID-WarpIDNV-WarpIDNV-04421",
16591          "text": " The variable decorated with <code>WarpIDNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value"
16592        }
16593      ]
16594    },
16595    "WorkgroupId": {
16596      "core": [
16597        {
16598          "vuid": "VUID-WorkgroupId-WorkgroupId-04422",
16599          "text": " The <code>WorkgroupId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}"
16600        },
16601        {
16602          "vuid": "VUID-WorkgroupId-WorkgroupId-04423",
16603          "text": " The variable decorated with <code>WorkgroupId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16604        },
16605        {
16606          "vuid": "VUID-WorkgroupId-WorkgroupId-04424",
16607          "text": " The variable decorated with <code>WorkgroupId</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values"
16608        }
16609      ]
16610    },
16611    "WorkgroupSize": {
16612      "core": [
16613        {
16614          "vuid": "VUID-WorkgroupSize-WorkgroupSize-04425",
16615          "text": " The <code>WorkgroupSize</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}"
16616        },
16617        {
16618          "vuid": "VUID-WorkgroupSize-WorkgroupSize-04426",
16619          "text": " The variable decorated with <code>WorkgroupSize</code> <strong class=\"purple\">must</strong> be a specialization constant or a constant"
16620        },
16621        {
16622          "vuid": "VUID-WorkgroupSize-WorkgroupSize-04427",
16623          "text": " The variable decorated with <code>WorkgroupSize</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values"
16624        }
16625      ]
16626    },
16627    "WorldRayDirectionKHR": {
16628      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
16629        {
16630          "vuid": "VUID-WorldRayDirectionKHR-WorldRayDirectionKHR-04428",
16631          "text": " The <code>WorldRayDirectionKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> {ExecutionModel}"
16632        },
16633        {
16634          "vuid": "VUID-WorldRayDirectionKHR-WorldRayDirectionKHR-04429",
16635          "text": " The variable decorated with <code>WorldRayDirectionKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16636        },
16637        {
16638          "vuid": "VUID-WorldRayDirectionKHR-WorldRayDirectionKHR-04430",
16639          "text": " The variable decorated with <code>WorldRayDirectionKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values"
16640        }
16641      ]
16642    },
16643    "WorldRayOriginKHR": {
16644      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
16645        {
16646          "vuid": "VUID-WorldRayOriginKHR-WorldRayOriginKHR-04431",
16647          "text": " The <code>WorldRayOriginKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> {ExecutionModel}"
16648        },
16649        {
16650          "vuid": "VUID-WorldRayOriginKHR-WorldRayOriginKHR-04432",
16651          "text": " The variable decorated with <code>WorldRayOriginKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16652        },
16653        {
16654          "vuid": "VUID-WorldRayOriginKHR-WorldRayOriginKHR-04433",
16655          "text": " The variable decorated with <code>WorldRayOriginKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values"
16656        }
16657      ]
16658    },
16659    "WorldToObjectKHR": {
16660      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
16661        {
16662          "vuid": "VUID-WorldToObjectKHR-WorldToObjectKHR-04434",
16663          "text": " The <code>WorldToObjectKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel}"
16664        },
16665        {
16666          "vuid": "VUID-WorldToObjectKHR-WorldToObjectKHR-04435",
16667          "text": " The variable decorated with <code>WorldToObjectKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}"
16668        },
16669        {
16670          "vuid": "VUID-WorldToObjectKHR-WorldToObjectKHR-04436",
16671          "text": " The variable decorated with <code>WorldToObjectKHR</code> <strong class=\"purple\">must</strong> be declared as a matrix with four columns of three-component vectors of 32-bit floating-point values"
16672        }
16673      ]
16674    },
16675    "vkCreateQueryPool": {
16676      "core": [
16677        {
16678          "vuid": "VUID-vkCreateQueryPool-device-parameter",
16679          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
16680        },
16681        {
16682          "vuid": "VUID-vkCreateQueryPool-pCreateInfo-parameter",
16683          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkQueryPoolCreateInfo\">VkQueryPoolCreateInfo</a> structure"
16684        },
16685        {
16686          "vuid": "VUID-vkCreateQueryPool-pAllocator-parameter",
16687          "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"
16688        },
16689        {
16690          "vuid": "VUID-vkCreateQueryPool-pQueryPool-parameter",
16691          "text": " <code>pQueryPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
16692        }
16693      ]
16694    },
16695    "VkQueryPoolCreateInfo": {
16696      "core": [
16697        {
16698          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00791",
16699          "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>"
16700        },
16701        {
16702          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00792",
16703          "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"
16704        },
16705        {
16706          "vuid": "VUID-VkQueryPoolCreateInfo-queryCount-02763",
16707          "text": " <code>queryCount</code> <strong class=\"purple\">must</strong> be greater than 0"
16708        },
16709        {
16710          "vuid": "VUID-VkQueryPoolCreateInfo-sType-sType",
16711          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO</code>"
16712        },
16713        {
16714          "vuid": "VUID-VkQueryPoolCreateInfo-pNext-pNext",
16715          "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>"
16716        },
16717        {
16718          "vuid": "VUID-VkQueryPoolCreateInfo-sType-unique",
16719          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
16720        },
16721        {
16722          "vuid": "VUID-VkQueryPoolCreateInfo-flags-zerobitmask",
16723          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
16724        },
16725        {
16726          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-parameter",
16727          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
16728        }
16729      ],
16730      "(VK_KHR_performance_query)": [
16731        {
16732          "vuid": "VUID-VkQueryPoolCreateInfo-queryType-03222",
16733          "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>"
16734        }
16735      ]
16736    },
16737    "VkQueryPoolPerformanceCreateInfoKHR": {
16738      "(VK_KHR_performance_query)": [
16739        {
16740          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-queueFamilyIndex-03236",
16741          "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be a valid queue family index of the device"
16742        },
16743        {
16744          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-performanceCounterQueryPools-03237",
16745          "text": " The <a href=\"#features-performanceCounterQueryPools\"><code>performanceCounterQueryPools</code></a> feature <strong class=\"purple\">must</strong> be enabled"
16746        },
16747        {
16748          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-03321",
16749          "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>"
16750        },
16751        {
16752          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-sType-sType",
16753          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR</code>"
16754        },
16755        {
16756          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-parameter",
16757          "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"
16758        },
16759        {
16760          "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-counterIndexCount-arraylength",
16761          "text": " <code>counterIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
16762        }
16763      ]
16764    },
16765    "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR": {
16766      "(VK_KHR_performance_query)": [
16767        {
16768          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-physicalDevice-parameter",
16769          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
16770        },
16771        {
16772          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-pPerformanceQueryCreateInfo-parameter",
16773          "text": " <code>pPerformanceQueryCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkQueryPoolPerformanceCreateInfoKHR\">VkQueryPoolPerformanceCreateInfoKHR</a> structure"
16774        },
16775        {
16776          "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-pNumPasses-parameter",
16777          "text": " <code>pNumPasses</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
16778        }
16779      ]
16780    },
16781    "vkDestroyQueryPool": {
16782      "core": [
16783        {
16784          "vuid": "VUID-vkDestroyQueryPool-queryPool-00793",
16785          "text": " All submitted commands that refer to <code>queryPool</code> <strong class=\"purple\">must</strong> have completed execution"
16786        },
16787        {
16788          "vuid": "VUID-vkDestroyQueryPool-queryPool-00794",
16789          "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"
16790        },
16791        {
16792          "vuid": "VUID-vkDestroyQueryPool-queryPool-00795",
16793          "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>"
16794        },
16795        {
16796          "vuid": "VUID-vkDestroyQueryPool-device-parameter",
16797          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
16798        },
16799        {
16800          "vuid": "VUID-vkDestroyQueryPool-queryPool-parameter",
16801          "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"
16802        },
16803        {
16804          "vuid": "VUID-vkDestroyQueryPool-pAllocator-parameter",
16805          "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"
16806        },
16807        {
16808          "vuid": "VUID-vkDestroyQueryPool-queryPool-parent",
16809          "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>"
16810        }
16811      ]
16812    },
16813    "vkCmdResetQueryPool": {
16814      "core": [
16815        {
16816          "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00796",
16817          "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
16818        },
16819        {
16820          "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00797",
16821          "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>"
16822        },
16823        {
16824          "vuid": "VUID-vkCmdResetQueryPool-None-02841",
16825          "text": " All queries used by the command <strong class=\"purple\">must</strong> not be active"
16826        },
16827        {
16828          "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-parameter",
16829          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
16830        },
16831        {
16832          "vuid": "VUID-vkCmdResetQueryPool-queryPool-parameter",
16833          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
16834        },
16835        {
16836          "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-recording",
16837          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16838        },
16839        {
16840          "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-cmdpool",
16841          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
16842        },
16843        {
16844          "vuid": "VUID-vkCmdResetQueryPool-renderpass",
16845          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
16846        },
16847        {
16848          "vuid": "VUID-vkCmdResetQueryPool-commonparent",
16849          "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>"
16850        }
16851      ],
16852      "(VK_KHR_performance_query)": [
16853        {
16854          "vuid": "VUID-vkCmdResetQueryPool-firstQuery-02862",
16855          "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>"
16856        }
16857      ]
16858    },
16859    "vkResetQueryPool": {
16860      "(VK_VERSION_1_2,VK_EXT_host_query_reset)": [
16861        {
16862          "vuid": "VUID-vkResetQueryPool-None-02665",
16863          "text": " The <a href=\"#features-hostQueryReset\">hostQueryReset</a> feature <strong class=\"purple\">must</strong> be enabled"
16864        },
16865        {
16866          "vuid": "VUID-vkResetQueryPool-firstQuery-02666",
16867          "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
16868        },
16869        {
16870          "vuid": "VUID-vkResetQueryPool-firstQuery-02667",
16871          "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>"
16872        },
16873        {
16874          "vuid": "VUID-vkResetQueryPool-firstQuery-02741",
16875          "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"
16876        },
16877        {
16878          "vuid": "VUID-vkResetQueryPool-firstQuery-02742",
16879          "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"
16880        },
16881        {
16882          "vuid": "VUID-vkResetQueryPool-device-parameter",
16883          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
16884        },
16885        {
16886          "vuid": "VUID-vkResetQueryPool-queryPool-parameter",
16887          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
16888        },
16889        {
16890          "vuid": "VUID-vkResetQueryPool-queryPool-parent",
16891          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
16892        }
16893      ]
16894    },
16895    "vkCmdBeginQuery": {
16896      "core": [
16897        {
16898          "vuid": "VUID-vkCmdBeginQuery-queryPool-01922",
16899          "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>"
16900        },
16901        {
16902          "vuid": "VUID-vkCmdBeginQuery-None-00807",
16903          "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
16904        },
16905        {
16906          "vuid": "VUID-vkCmdBeginQuery-queryType-02804",
16907          "text": " The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_TIMESTAMP</code>"
16908        },
16909        {
16910          "vuid": "VUID-vkCmdBeginQuery-queryType-00800",
16911          "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>"
16912        },
16913        {
16914          "vuid": "VUID-vkCmdBeginQuery-query-00802",
16915          "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
16916        },
16917        {
16918          "vuid": "VUID-vkCmdBeginQuery-queryType-00803",
16919          "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"
16920        },
16921        {
16922          "vuid": "VUID-vkCmdBeginQuery-queryType-00804",
16923          "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"
16924        },
16925        {
16926          "vuid": "VUID-vkCmdBeginQuery-queryType-00805",
16927          "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"
16928        },
16929        {
16930          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-parameter",
16931          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
16932        },
16933        {
16934          "vuid": "VUID-vkCmdBeginQuery-queryPool-parameter",
16935          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
16936        },
16937        {
16938          "vuid": "VUID-vkCmdBeginQuery-flags-parameter",
16939          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values"
16940        },
16941        {
16942          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-recording",
16943          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16944        },
16945        {
16946          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-cmdpool",
16947          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
16948        },
16949        {
16950          "vuid": "VUID-vkCmdBeginQuery-commonparent",
16951          "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>"
16952        }
16953      ],
16954      "(VK_VERSION_1_1)": [
16955        {
16956          "vuid": "VUID-vkCmdBeginQuery-commandBuffer-01885",
16957          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
16958        }
16959      ],
16960      "(VK_VERSION_1_1,VK_KHR_multiview)": [
16961        {
16962          "vuid": "VUID-vkCmdBeginQuery-query-00808",
16963          "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>"
16964        }
16965      ],
16966      "(VK_EXT_transform_feedback)": [
16967        {
16968          "vuid": "VUID-vkCmdBeginQuery-queryType-02327",
16969          "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"
16970        },
16971        {
16972          "vuid": "VUID-vkCmdBeginQuery-queryType-02328",
16973          "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"
16974        }
16975      ],
16976      "(VK_KHR_performance_query)": [
16977        {
16978          "vuid": "VUID-vkCmdBeginQuery-queryPool-03223",
16979          "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>"
16980        },
16981        {
16982          "vuid": "VUID-vkCmdBeginQuery-queryPool-03224",
16983          "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>"
16984        },
16985        {
16986          "vuid": "VUID-vkCmdBeginQuery-queryPool-03225",
16987          "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"
16988        },
16989        {
16990          "vuid": "VUID-vkCmdBeginQuery-queryPool-03226",
16991          "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-performanceCounterMultipleQueryPools\"><code>performanceCounterMultipleQueryPools</code></a> feature <strong class=\"purple\">must</strong> be enabled"
16992        },
16993        {
16994          "vuid": "VUID-vkCmdBeginQuery-None-02863",
16995          "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"
16996        }
16997      ]
16998    },
16999    "vkCmdBeginQueryIndexedEXT": {
17000      "core": [
17001        {
17002          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-01922",
17003          "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>"
17004        },
17005        {
17006          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-00807",
17007          "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
17008        },
17009        {
17010          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02804",
17011          "text": " The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_TIMESTAMP</code>"
17012        },
17013        {
17014          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00800",
17015          "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>"
17016        },
17017        {
17018          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-00802",
17019          "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
17020        },
17021        {
17022          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00803",
17023          "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"
17024        },
17025        {
17026          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00804",
17027          "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"
17028        },
17029        {
17030          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00805",
17031          "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"
17032        },
17033        {
17034          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02338",
17035          "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"
17036        },
17037        {
17038          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02339",
17039          "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>"
17040        },
17041        {
17042          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02340",
17043          "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"
17044        },
17045        {
17046          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02341",
17047          "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"
17048        }
17049      ],
17050      "(VK_VERSION_1_1)": [
17051        {
17052          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-01885",
17053          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
17054        }
17055      ],
17056      "(VK_VERSION_1_1,VK_KHR_multiview)": [
17057        {
17058          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-00808",
17059          "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>"
17060        }
17061      ],
17062      "(VK_KHR_performance_query)": [
17063        {
17064          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03223",
17065          "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>"
17066        },
17067        {
17068          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03224",
17069          "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>"
17070        },
17071        {
17072          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03225",
17073          "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"
17074        },
17075        {
17076          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03226",
17077          "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-performanceCounterMultipleQueryPools\"><code>performanceCounterMultipleQueryPools</code></a> feature <strong class=\"purple\">must</strong> be enabled"
17078        },
17079        {
17080          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-02863",
17081          "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"
17082        }
17083      ],
17084      "(VK_EXT_transform_feedback)": [
17085        {
17086          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter",
17087          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
17088        },
17089        {
17090          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter",
17091          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
17092        },
17093        {
17094          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-flags-parameter",
17095          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values"
17096        },
17097        {
17098          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-recording",
17099          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17100        },
17101        {
17102          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-cmdpool",
17103          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
17104        },
17105        {
17106          "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commonparent",
17107          "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>"
17108        }
17109      ]
17110    },
17111    "vkCmdEndQuery": {
17112      "core": [
17113        {
17114          "vuid": "VUID-vkCmdEndQuery-None-01923",
17115          "text": " All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>"
17116        },
17117        {
17118          "vuid": "VUID-vkCmdEndQuery-query-00810",
17119          "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
17120        },
17121        {
17122          "vuid": "VUID-vkCmdEndQuery-commandBuffer-parameter",
17123          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
17124        },
17125        {
17126          "vuid": "VUID-vkCmdEndQuery-queryPool-parameter",
17127          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
17128        },
17129        {
17130          "vuid": "VUID-vkCmdEndQuery-commandBuffer-recording",
17131          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17132        },
17133        {
17134          "vuid": "VUID-vkCmdEndQuery-commandBuffer-cmdpool",
17135          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
17136        },
17137        {
17138          "vuid": "VUID-vkCmdEndQuery-commonparent",
17139          "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>"
17140        }
17141      ],
17142      "(VK_VERSION_1_1)": [
17143        {
17144          "vuid": "VUID-vkCmdEndQuery-commandBuffer-01886",
17145          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
17146        }
17147      ],
17148      "(VK_VERSION_1_1,VK_KHR_multiview)": [
17149        {
17150          "vuid": "VUID-vkCmdEndQuery-query-00812",
17151          "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>"
17152        }
17153      ],
17154      "(VK_KHR_performance_query)": [
17155        {
17156          "vuid": "VUID-vkCmdEndQuery-queryPool-03227",
17157          "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>"
17158        },
17159        {
17160          "vuid": "VUID-vkCmdEndQuery-queryPool-03228",
17161          "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"
17162        }
17163      ]
17164    },
17165    "vkCmdEndQueryIndexedEXT": {
17166      "(VK_EXT_transform_feedback)": [
17167        {
17168          "vuid": "VUID-vkCmdEndQueryIndexedEXT-None-02342",
17169          "text": " All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>"
17170        },
17171        {
17172          "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02343",
17173          "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
17174        },
17175        {
17176          "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02346",
17177          "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>"
17178        },
17179        {
17180          "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02347",
17181          "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"
17182        },
17183        {
17184          "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02723",
17185          "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"
17186        },
17187        {
17188          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter",
17189          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
17190        },
17191        {
17192          "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter",
17193          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
17194        },
17195        {
17196          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-recording",
17197          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17198        },
17199        {
17200          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-cmdpool",
17201          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
17202        },
17203        {
17204          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commonparent",
17205          "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>"
17206        }
17207      ],
17208      "(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
17209        {
17210          "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344",
17211          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
17212        }
17213      ],
17214      "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
17215        {
17216          "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02345",
17217          "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>"
17218        }
17219      ]
17220    },
17221    "vkGetQueryPoolResults": {
17222      "core": [
17223        {
17224          "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00813",
17225          "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
17226        },
17227        {
17228          "vuid": "VUID-vkGetQueryPoolResults-flags-02827",
17229          "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>"
17230        },
17231        {
17232          "vuid": "VUID-vkGetQueryPoolResults-flags-00815",
17233          "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>"
17234        },
17235        {
17236          "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00816",
17237          "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>"
17238        },
17239        {
17240          "vuid": "VUID-vkGetQueryPoolResults-dataSize-00817",
17241          "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>"
17242        },
17243        {
17244          "vuid": "VUID-vkGetQueryPoolResults-queryType-00818",
17245          "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>"
17246        },
17247        {
17248          "vuid": "VUID-vkGetQueryPoolResults-device-parameter",
17249          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
17250        },
17251        {
17252          "vuid": "VUID-vkGetQueryPoolResults-queryPool-parameter",
17253          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
17254        },
17255        {
17256          "vuid": "VUID-vkGetQueryPoolResults-pData-parameter",
17257          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
17258        },
17259        {
17260          "vuid": "VUID-vkGetQueryPoolResults-flags-parameter",
17261          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values"
17262        },
17263        {
17264          "vuid": "VUID-vkGetQueryPoolResults-dataSize-arraylength",
17265          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17266        },
17267        {
17268          "vuid": "VUID-vkGetQueryPoolResults-queryPool-parent",
17269          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
17270        }
17271      ],
17272      "(VK_KHR_performance_query)": [
17273        {
17274          "vuid": "VUID-vkGetQueryPoolResults-flags-02828",
17275          "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>"
17276        },
17277        {
17278          "vuid": "VUID-vkGetQueryPoolResults-queryType-03229",
17279          "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>"
17280        },
17281        {
17282          "vuid": "VUID-vkGetQueryPoolResults-queryType-04519",
17283          "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, then <code>stride</code> <strong class=\"purple\">must</strong> be large enough to contain <code>VkQueryPoolPerformanceCreateInfoKHR</code>::<code>counterIndexCount</code> used to create <code>queryPool</code> times the size of <a href=\"#VkPerformanceCounterResultKHR\">VkPerformanceCounterResultKHR</a>."
17284        },
17285        {
17286          "vuid": "VUID-vkGetQueryPoolResults-queryType-03230",
17287          "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>"
17288        },
17289        {
17290          "vuid": "VUID-vkGetQueryPoolResults-queryType-03231",
17291          "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>"
17292        }
17293      ]
17294    },
17295    "vkCmdCopyQueryPoolResults": {
17296      "core": [
17297        {
17298          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstOffset-00819",
17299          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
17300        },
17301        {
17302          "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00820",
17303          "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
17304        },
17305        {
17306          "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00821",
17307          "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>"
17308        },
17309        {
17310          "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00822",
17311          "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>"
17312        },
17313        {
17314          "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00823",
17315          "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>"
17316        },
17317        {
17318          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824",
17319          "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>"
17320        },
17321        {
17322          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825",
17323          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
17324        },
17325        {
17326          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826",
17327          "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"
17328        },
17329        {
17330          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-00827",
17331          "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>"
17332        },
17333        {
17334          "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter",
17335          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
17336        },
17337        {
17338          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryPool-parameter",
17339          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
17340        },
17341        {
17342          "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter",
17343          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
17344        },
17345        {
17346          "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-parameter",
17347          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values"
17348        },
17349        {
17350          "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-recording",
17351          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17352        },
17353        {
17354          "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool",
17355          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
17356        },
17357        {
17358          "vuid": "VUID-vkCmdCopyQueryPoolResults-renderpass",
17359          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
17360        },
17361        {
17362          "vuid": "VUID-vkCmdCopyQueryPoolResults-commonparent",
17363          "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>"
17364        }
17365      ],
17366      "(VK_KHR_performance_query)": [
17367        {
17368          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-03232",
17369          "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>"
17370        },
17371        {
17372          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-03233",
17373          "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>"
17374        },
17375        {
17376          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-03234",
17377          "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>"
17378        }
17379      ],
17380      "(VK_INTEL_performance_query)": [
17381        {
17382          "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-02734",
17383          "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>"
17384        }
17385      ]
17386    },
17387    "vkCmdWriteTimestamp": {
17388      "core": [
17389        {
17390          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04074",
17391          "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"
17392        },
17393        {
17394          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04075",
17395          "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>"
17396        },
17397        {
17398          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04076",
17399          "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>"
17400        },
17401        {
17402          "vuid": "VUID-vkCmdWriteTimestamp-queryPool-01416",
17403          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> of <code>VK_QUERY_TYPE_TIMESTAMP</code>"
17404        },
17405        {
17406          "vuid": "VUID-vkCmdWriteTimestamp-queryPool-00828",
17407          "text": " The query identified by <code>queryPool</code> and <code>query</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>"
17408        },
17409        {
17410          "vuid": "VUID-vkCmdWriteTimestamp-timestampValidBits-00829",
17411          "text": " The command pool&#8217;s queue family <strong class=\"purple\">must</strong> support a non-zero <code>timestampValidBits</code>"
17412        },
17413        {
17414          "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-parameter",
17415          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
17416        },
17417        {
17418          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-parameter",
17419          "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value"
17420        },
17421        {
17422          "vuid": "VUID-vkCmdWriteTimestamp-queryPool-parameter",
17423          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
17424        },
17425        {
17426          "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-recording",
17427          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17428        },
17429        {
17430          "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-cmdpool",
17431          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
17432        },
17433        {
17434          "vuid": "VUID-vkCmdWriteTimestamp-commonparent",
17435          "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>"
17436        }
17437      ],
17438      "(VK_EXT_conditional_rendering)": [
17439        {
17440          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04077",
17441          "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>"
17442        }
17443      ],
17444      "(VK_EXT_fragment_density_map)": [
17445        {
17446          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04078",
17447          "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>"
17448        }
17449      ],
17450      "(VK_EXT_transform_feedback)": [
17451        {
17452          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04079",
17453          "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>"
17454        }
17455      ],
17456      "(VK_NV_mesh_shader)": [
17457        {
17458          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04080",
17459          "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>"
17460        }
17461      ],
17462      "(VK_NV_shading_rate_image)": [
17463        {
17464          "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04081",
17465          "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>"
17466        }
17467      ],
17468      "(VK_VERSION_1_1,VK_KHR_multiview)": [
17469        {
17470          "vuid": "VUID-vkCmdWriteTimestamp-None-00830",
17471          "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
17472        },
17473        {
17474          "vuid": "VUID-vkCmdWriteTimestamp-query-00831",
17475          "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>"
17476        }
17477      ]
17478    },
17479    "vkAcquireProfilingLockKHR": {
17480      "(VK_KHR_performance_query)": [
17481        {
17482          "vuid": "VUID-vkAcquireProfilingLockKHR-device-parameter",
17483          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
17484        },
17485        {
17486          "vuid": "VUID-vkAcquireProfilingLockKHR-pInfo-parameter",
17487          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAcquireProfilingLockInfoKHR\">VkAcquireProfilingLockInfoKHR</a> structure"
17488        }
17489      ]
17490    },
17491    "VkAcquireProfilingLockInfoKHR": {
17492      "(VK_KHR_performance_query)": [
17493        {
17494          "vuid": "VUID-VkAcquireProfilingLockInfoKHR-sType-sType",
17495          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR</code>"
17496        },
17497        {
17498          "vuid": "VUID-VkAcquireProfilingLockInfoKHR-pNext-pNext",
17499          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
17500        },
17501        {
17502          "vuid": "VUID-VkAcquireProfilingLockInfoKHR-flags-zerobitmask",
17503          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17504        }
17505      ]
17506    },
17507    "vkReleaseProfilingLockKHR": {
17508      "(VK_KHR_performance_query)": [
17509        {
17510          "vuid": "VUID-vkReleaseProfilingLockKHR-device-03235",
17511          "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>"
17512        },
17513        {
17514          "vuid": "VUID-vkReleaseProfilingLockKHR-device-parameter",
17515          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
17516        }
17517      ]
17518    },
17519    "vkInitializePerformanceApiINTEL": {
17520      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17521        {
17522          "vuid": "VUID-vkInitializePerformanceApiINTEL-device-parameter",
17523          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
17524        },
17525        {
17526          "vuid": "VUID-vkInitializePerformanceApiINTEL-pInitializeInfo-parameter",
17527          "text": " <code>pInitializeInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkInitializePerformanceApiInfoINTEL\">VkInitializePerformanceApiInfoINTEL</a> structure"
17528        }
17529      ]
17530    },
17531    "VkInitializePerformanceApiInfoINTEL": {
17532      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17533        {
17534          "vuid": "VUID-VkInitializePerformanceApiInfoINTEL-sType-sType",
17535          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL</code>"
17536        },
17537        {
17538          "vuid": "VUID-VkInitializePerformanceApiInfoINTEL-pNext-pNext",
17539          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
17540        }
17541      ]
17542    },
17543    "vkUninitializePerformanceApiINTEL": {
17544      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17545        {
17546          "vuid": "VUID-vkUninitializePerformanceApiINTEL-device-parameter",
17547          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
17548        }
17549      ]
17550    },
17551    "vkGetPerformanceParameterINTEL": {
17552      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17553        {
17554          "vuid": "VUID-vkGetPerformanceParameterINTEL-device-parameter",
17555          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
17556        },
17557        {
17558          "vuid": "VUID-vkGetPerformanceParameterINTEL-parameter-parameter",
17559          "text": " <code>parameter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceParameterTypeINTEL\">VkPerformanceParameterTypeINTEL</a> value"
17560        },
17561        {
17562          "vuid": "VUID-vkGetPerformanceParameterINTEL-pValue-parameter",
17563          "text": " <code>pValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPerformanceValueINTEL\">VkPerformanceValueINTEL</a> structure"
17564        }
17565      ]
17566    },
17567    "VkPerformanceValueINTEL": {
17568      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17569        {
17570          "vuid": "VUID-VkPerformanceValueINTEL-type-parameter",
17571          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceValueTypeINTEL\">VkPerformanceValueTypeINTEL</a> value"
17572        },
17573        {
17574          "vuid": "VUID-VkPerformanceValueINTEL-valueString-parameter",
17575          "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"
17576        }
17577      ]
17578    },
17579    "VkQueryPoolPerformanceQueryCreateInfoINTEL": {
17580      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17581        {
17582          "vuid": "VUID-VkQueryPoolPerformanceQueryCreateInfoINTEL-sType-sType",
17583          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL</code>"
17584        },
17585        {
17586          "vuid": "VUID-VkQueryPoolPerformanceQueryCreateInfoINTEL-performanceCountersSampling-parameter",
17587          "text": " <code>performanceCountersSampling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPoolSamplingModeINTEL\">VkQueryPoolSamplingModeINTEL</a> value"
17588        }
17589      ]
17590    },
17591    "vkCmdSetPerformanceMarkerINTEL": {
17592      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17593        {
17594          "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-parameter",
17595          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
17596        },
17597        {
17598          "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-pMarkerInfo-parameter",
17599          "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceMarkerInfoINTEL\">VkPerformanceMarkerInfoINTEL</a> structure"
17600        },
17601        {
17602          "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-recording",
17603          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17604        },
17605        {
17606          "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-cmdpool",
17607          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
17608        }
17609      ]
17610    },
17611    "VkPerformanceMarkerInfoINTEL": {
17612      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17613        {
17614          "vuid": "VUID-VkPerformanceMarkerInfoINTEL-sType-sType",
17615          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL</code>"
17616        },
17617        {
17618          "vuid": "VUID-VkPerformanceMarkerInfoINTEL-pNext-pNext",
17619          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
17620        }
17621      ]
17622    },
17623    "vkCmdSetPerformanceStreamMarkerINTEL": {
17624      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17625        {
17626          "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-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-vkCmdSetPerformanceStreamMarkerINTEL-pMarkerInfo-parameter",
17631          "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceStreamMarkerInfoINTEL\">VkPerformanceStreamMarkerInfoINTEL</a> structure"
17632        },
17633        {
17634          "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-recording",
17635          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17636        },
17637        {
17638          "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-cmdpool",
17639          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
17640        }
17641      ]
17642    },
17643    "VkPerformanceStreamMarkerInfoINTEL": {
17644      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17645        {
17646          "vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-marker-02735",
17647          "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>"
17648        },
17649        {
17650          "vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-sType-sType",
17651          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL</code>"
17652        },
17653        {
17654          "vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-pNext-pNext",
17655          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
17656        }
17657      ]
17658    },
17659    "vkCmdSetPerformanceOverrideINTEL": {
17660      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17661        {
17662          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-02736",
17663          "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>"
17664        },
17665        {
17666          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-parameter",
17667          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
17668        },
17669        {
17670          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-parameter",
17671          "text": " <code>pOverrideInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceOverrideInfoINTEL\">VkPerformanceOverrideInfoINTEL</a> structure"
17672        },
17673        {
17674          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-recording",
17675          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17676        },
17677        {
17678          "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-cmdpool",
17679          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
17680        }
17681      ]
17682    },
17683    "VkPerformanceOverrideInfoINTEL": {
17684      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17685        {
17686          "vuid": "VUID-VkPerformanceOverrideInfoINTEL-sType-sType",
17687          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL</code>"
17688        },
17689        {
17690          "vuid": "VUID-VkPerformanceOverrideInfoINTEL-pNext-pNext",
17691          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
17692        },
17693        {
17694          "vuid": "VUID-VkPerformanceOverrideInfoINTEL-type-parameter",
17695          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceOverrideTypeINTEL\">VkPerformanceOverrideTypeINTEL</a> value"
17696        }
17697      ]
17698    },
17699    "vkAcquirePerformanceConfigurationINTEL": {
17700      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17701        {
17702          "vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-device-parameter",
17703          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
17704        },
17705        {
17706          "vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-pAcquireInfo-parameter",
17707          "text": " <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceConfigurationAcquireInfoINTEL\">VkPerformanceConfigurationAcquireInfoINTEL</a> structure"
17708        },
17709        {
17710          "vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-pConfiguration-parameter",
17711          "text": " <code>pConfiguration</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPerformanceConfigurationINTEL\">VkPerformanceConfigurationINTEL</a> handle"
17712        }
17713      ]
17714    },
17715    "VkPerformanceConfigurationAcquireInfoINTEL": {
17716      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17717        {
17718          "vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-sType-sType",
17719          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL</code>"
17720        },
17721        {
17722          "vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-pNext-pNext",
17723          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
17724        },
17725        {
17726          "vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-type-parameter",
17727          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceConfigurationTypeINTEL\">VkPerformanceConfigurationTypeINTEL</a> value"
17728        }
17729      ]
17730    },
17731    "vkQueueSetPerformanceConfigurationINTEL": {
17732      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17733        {
17734          "vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-queue-parameter",
17735          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
17736        },
17737        {
17738          "vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-configuration-parameter",
17739          "text": " <code>configuration</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceConfigurationINTEL\">VkPerformanceConfigurationINTEL</a> handle"
17740        },
17741        {
17742          "vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-commonparent",
17743          "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>"
17744        }
17745      ]
17746    },
17747    "vkReleasePerformanceConfigurationINTEL": {
17748      "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
17749        {
17750          "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-02737",
17751          "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>"
17752        },
17753        {
17754          "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-device-parameter",
17755          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
17756        },
17757        {
17758          "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-parameter",
17759          "text": " If <code>configuration</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>configuration</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceConfigurationINTEL\">VkPerformanceConfigurationINTEL</a> handle"
17760        },
17761        {
17762          "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-parent",
17763          "text": " If <code>configuration</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
17764        }
17765      ]
17766    },
17767    "vkCmdClearColorImage": {
17768      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
17769        {
17770          "vuid": "VUID-vkCmdClearColorImage-image-01993",
17771          "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>"
17772        }
17773      ],
17774      "core": [
17775        {
17776          "vuid": "VUID-vkCmdClearColorImage-image-00002",
17777          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
17778        },
17779        {
17780          "vuid": "VUID-vkCmdClearColorImage-image-00003",
17781          "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"
17782        },
17783        {
17784          "vuid": "VUID-vkCmdClearColorImage-imageLayout-00004",
17785          "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>"
17786        },
17787        {
17788          "vuid": "VUID-vkCmdClearColorImage-aspectMask-02498",
17789          "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>"
17790        },
17791        {
17792          "vuid": "VUID-vkCmdClearColorImage-baseMipLevel-01470",
17793          "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"
17794        },
17795        {
17796          "vuid": "VUID-vkCmdClearColorImage-pRanges-01692",
17797          "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"
17798        },
17799        {
17800          "vuid": "VUID-vkCmdClearColorImage-baseArrayLayer-01472",
17801          "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"
17802        },
17803        {
17804          "vuid": "VUID-vkCmdClearColorImage-pRanges-01693",
17805          "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"
17806        },
17807        {
17808          "vuid": "VUID-vkCmdClearColorImage-image-00007",
17809          "text": " <code>image</code> <strong class=\"purple\">must</strong> not have a compressed or depth/stencil format"
17810        },
17811        {
17812          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-parameter",
17813          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
17814        },
17815        {
17816          "vuid": "VUID-vkCmdClearColorImage-image-parameter",
17817          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
17818        },
17819        {
17820          "vuid": "VUID-vkCmdClearColorImage-imageLayout-parameter",
17821          "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
17822        },
17823        {
17824          "vuid": "VUID-vkCmdClearColorImage-pColor-parameter",
17825          "text": " <code>pColor</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkClearColorValue\">VkClearColorValue</a> union"
17826        },
17827        {
17828          "vuid": "VUID-vkCmdClearColorImage-pRanges-parameter",
17829          "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"
17830        },
17831        {
17832          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-recording",
17833          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17834        },
17835        {
17836          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-cmdpool",
17837          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
17838        },
17839        {
17840          "vuid": "VUID-vkCmdClearColorImage-renderpass",
17841          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
17842        },
17843        {
17844          "vuid": "VUID-vkCmdClearColorImage-rangeCount-arraylength",
17845          "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17846        },
17847        {
17848          "vuid": "VUID-vkCmdClearColorImage-commonparent",
17849          "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>"
17850        }
17851      ],
17852      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
17853        {
17854          "vuid": "VUID-vkCmdClearColorImage-image-01545",
17855          "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>"
17856        }
17857      ],
17858      "!(VK_KHR_shared_presentable_image)": [
17859        {
17860          "vuid": "VUID-vkCmdClearColorImage-imageLayout-00005",
17861          "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>"
17862        }
17863      ],
17864      "(VK_KHR_shared_presentable_image)": [
17865        {
17866          "vuid": "VUID-vkCmdClearColorImage-imageLayout-01394",
17867          "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>"
17868        }
17869      ],
17870      "(VK_VERSION_1_1)": [
17871        {
17872          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01805",
17873          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image"
17874        },
17875        {
17876          "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01806",
17877          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image"
17878        }
17879      ]
17880    },
17881    "vkCmdClearDepthStencilImage": {
17882      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
17883        {
17884          "vuid": "VUID-vkCmdClearDepthStencilImage-image-01994",
17885          "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>"
17886        }
17887      ],
17888      "!(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [
17889        {
17890          "vuid": "VUID-vkCmdClearDepthStencilImage-image-00009",
17891          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
17892        }
17893      ],
17894      "(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [
17895        {
17896          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02658",
17897          "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>"
17898        },
17899        {
17900          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02659",
17901          "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>"
17902        },
17903        {
17904          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02660",
17905          "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>"
17906        }
17907      ],
17908      "core": [
17909        {
17910          "vuid": "VUID-vkCmdClearDepthStencilImage-image-00010",
17911          "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"
17912        },
17913        {
17914          "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00011",
17915          "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>"
17916        },
17917        {
17918          "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00012",
17919          "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>"
17920        },
17921        {
17922          "vuid": "VUID-vkCmdClearDepthStencilImage-aspectMask-02824",
17923          "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>"
17924        },
17925        {
17926          "vuid": "VUID-vkCmdClearDepthStencilImage-image-02825",
17927          "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"
17928        },
17929        {
17930          "vuid": "VUID-vkCmdClearDepthStencilImage-image-02826",
17931          "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"
17932        },
17933        {
17934          "vuid": "VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474",
17935          "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"
17936        },
17937        {
17938          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01694",
17939          "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"
17940        },
17941        {
17942          "vuid": "VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476",
17943          "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"
17944        },
17945        {
17946          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01695",
17947          "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"
17948        },
17949        {
17950          "vuid": "VUID-vkCmdClearDepthStencilImage-image-00014",
17951          "text": " <code>image</code> <strong class=\"purple\">must</strong> have a depth/stencil format"
17952        },
17953        {
17954          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter",
17955          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
17956        },
17957        {
17958          "vuid": "VUID-vkCmdClearDepthStencilImage-image-parameter",
17959          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
17960        },
17961        {
17962          "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-parameter",
17963          "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
17964        },
17965        {
17966          "vuid": "VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter",
17967          "text": " <code>pDepthStencil</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkClearDepthStencilValue\">VkClearDepthStencilValue</a> structure"
17968        },
17969        {
17970          "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-parameter",
17971          "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"
17972        },
17973        {
17974          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-recording",
17975          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17976        },
17977        {
17978          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-cmdpool",
17979          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17980        },
17981        {
17982          "vuid": "VUID-vkCmdClearDepthStencilImage-renderpass",
17983          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
17984        },
17985        {
17986          "vuid": "VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength",
17987          "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17988        },
17989        {
17990          "vuid": "VUID-vkCmdClearDepthStencilImage-commonparent",
17991          "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>"
17992        }
17993      ],
17994      "(VK_VERSION_1_1)": [
17995        {
17996          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01807",
17997          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image"
17998        },
17999        {
18000          "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01808",
18001          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image"
18002        }
18003      ]
18004    },
18005    "vkCmdClearAttachments": {
18006      "core": [
18007        {
18008          "vuid": "VUID-vkCmdClearAttachments-aspectMask-02501",
18009          "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"
18010        },
18011        {
18012          "vuid": "VUID-vkCmdClearAttachments-aspectMask-02502",
18013          "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"
18014        },
18015        {
18016          "vuid": "VUID-vkCmdClearAttachments-aspectMask-02503",
18017          "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"
18018        },
18019        {
18020          "vuid": "VUID-vkCmdClearAttachments-rect-02682",
18021          "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>"
18022        },
18023        {
18024          "vuid": "VUID-vkCmdClearAttachments-rect-02683",
18025          "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>"
18026        },
18027        {
18028          "vuid": "VUID-vkCmdClearAttachments-pRects-00016",
18029          "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"
18030        },
18031        {
18032          "vuid": "VUID-vkCmdClearAttachments-pRects-00017",
18033          "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"
18034        },
18035        {
18036          "vuid": "VUID-vkCmdClearAttachments-layerCount-01934",
18037          "text": " The <code>layerCount</code> member of each element of <code>pRects</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18038        },
18039        {
18040          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-parameter",
18041          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
18042        },
18043        {
18044          "vuid": "VUID-vkCmdClearAttachments-pAttachments-parameter",
18045          "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"
18046        },
18047        {
18048          "vuid": "VUID-vkCmdClearAttachments-pRects-parameter",
18049          "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"
18050        },
18051        {
18052          "vuid": "VUID-vkCmdClearAttachments-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-vkCmdClearAttachments-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-vkCmdClearAttachments-renderpass",
18061          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
18062        },
18063        {
18064          "vuid": "VUID-vkCmdClearAttachments-attachmentCount-arraylength",
18065          "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18066        },
18067        {
18068          "vuid": "VUID-vkCmdClearAttachments-rectCount-arraylength",
18069          "text": " <code>rectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18070        }
18071      ],
18072      "(VK_VERSION_1_1)": [
18073        {
18074          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02504",
18075          "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"
18076        },
18077        {
18078          "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02505",
18079          "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"
18080        }
18081      ],
18082      "(VK_VERSION_1_1,VK_KHR_multiview)": [
18083        {
18084          "vuid": "VUID-vkCmdClearAttachments-baseArrayLayer-00018",
18085          "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"
18086        }
18087      ]
18088    },
18089    "VkClearAttachment": {
18090      "core": [
18091        {
18092          "vuid": "VUID-VkClearAttachment-aspectMask-00019",
18093          "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>"
18094        },
18095        {
18096          "vuid": "VUID-VkClearAttachment-aspectMask-00020",
18097          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
18098        },
18099        {
18100          "vuid": "VUID-VkClearAttachment-clearValue-00021",
18101          "text": " <code>clearValue</code> <strong class=\"purple\">must</strong> be a valid <code>VkClearValue</code> union"
18102        },
18103        {
18104          "vuid": "VUID-VkClearAttachment-aspectMask-parameter",
18105          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
18106        },
18107        {
18108          "vuid": "VUID-VkClearAttachment-aspectMask-requiredbitmask",
18109          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18110        }
18111      ],
18112      "(VK_EXT_image_drm_format_modifier)": [
18113        {
18114          "vuid": "VUID-VkClearAttachment-aspectMask-02246",
18115          "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>"
18116        }
18117      ]
18118    },
18119    "VkClearDepthStencilValue": {
18120      "(VK_EXT_depth_range_unrestricted)": [
18121        {
18122          "vuid": "VUID-VkClearDepthStencilValue-depth-00022",
18123          "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"
18124        }
18125      ],
18126      "!(VK_EXT_depth_range_unrestricted)": [
18127        {
18128          "vuid": "VUID-VkClearDepthStencilValue-depth-02506",
18129          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
18130        }
18131      ]
18132    },
18133    "vkCmdFillBuffer": {
18134      "core": [
18135        {
18136          "vuid": "VUID-vkCmdFillBuffer-dstOffset-00024",
18137          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
18138        },
18139        {
18140          "vuid": "VUID-vkCmdFillBuffer-dstOffset-00025",
18141          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
18142        },
18143        {
18144          "vuid": "VUID-vkCmdFillBuffer-size-00026",
18145          "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>"
18146        },
18147        {
18148          "vuid": "VUID-vkCmdFillBuffer-size-00027",
18149          "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>"
18150        },
18151        {
18152          "vuid": "VUID-vkCmdFillBuffer-size-00028",
18153          "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>"
18154        },
18155        {
18156          "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00029",
18157          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
18158        },
18159        {
18160          "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00031",
18161          "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"
18162        },
18163        {
18164          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-parameter",
18165          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
18166        },
18167        {
18168          "vuid": "VUID-vkCmdFillBuffer-dstBuffer-parameter",
18169          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
18170        },
18171        {
18172          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-recording",
18173          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18174        },
18175        {
18176          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-cmdpool",
18177          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics or compute operations"
18178        },
18179        {
18180          "vuid": "VUID-vkCmdFillBuffer-renderpass",
18181          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
18182        },
18183        {
18184          "vuid": "VUID-vkCmdFillBuffer-commonparent",
18185          "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>"
18186        }
18187      ],
18188      "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
18189        {
18190          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-00030",
18191          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics or compute operations"
18192        }
18193      ],
18194      "(VK_VERSION_1_1)": [
18195        {
18196          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01811",
18197          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
18198        },
18199        {
18200          "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01812",
18201          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
18202        }
18203      ]
18204    },
18205    "vkCmdUpdateBuffer": {
18206      "core": [
18207        {
18208          "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00032",
18209          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
18210        },
18211        {
18212          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00033",
18213          "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>"
18214        },
18215        {
18216          "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00034",
18217          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
18218        },
18219        {
18220          "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00035",
18221          "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"
18222        },
18223        {
18224          "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00036",
18225          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
18226        },
18227        {
18228          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00037",
18229          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be less than or equal to <code>65536</code>"
18230        },
18231        {
18232          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00038",
18233          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
18234        },
18235        {
18236          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-parameter",
18237          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
18238        },
18239        {
18240          "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-parameter",
18241          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
18242        },
18243        {
18244          "vuid": "VUID-vkCmdUpdateBuffer-pData-parameter",
18245          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
18246        },
18247        {
18248          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-recording",
18249          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18250        },
18251        {
18252          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-cmdpool",
18253          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
18254        },
18255        {
18256          "vuid": "VUID-vkCmdUpdateBuffer-renderpass",
18257          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
18258        },
18259        {
18260          "vuid": "VUID-vkCmdUpdateBuffer-dataSize-arraylength",
18261          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18262        },
18263        {
18264          "vuid": "VUID-vkCmdUpdateBuffer-commonparent",
18265          "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>"
18266        }
18267      ],
18268      "(VK_VERSION_1_1)": [
18269        {
18270          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01813",
18271          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
18272        },
18273        {
18274          "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01814",
18275          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
18276        }
18277      ]
18278    },
18279    "vkCmdCopyBuffer": {
18280      "(VK_VERSION_1_1)": [
18281        {
18282          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01822",
18283          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
18284        },
18285        {
18286          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01823",
18287          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
18288        },
18289        {
18290          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01824",
18291          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
18292        }
18293      ],
18294      "core": [
18295        {
18296          "vuid": "VUID-vkCmdCopyBuffer-srcOffset-00113",
18297          "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>"
18298        },
18299        {
18300          "vuid": "VUID-vkCmdCopyBuffer-dstOffset-00114",
18301          "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>"
18302        },
18303        {
18304          "vuid": "VUID-vkCmdCopyBuffer-size-00115",
18305          "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>"
18306        },
18307        {
18308          "vuid": "VUID-vkCmdCopyBuffer-size-00116",
18309          "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>"
18310        },
18311        {
18312          "vuid": "VUID-vkCmdCopyBuffer-pRegions-00117",
18313          "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"
18314        },
18315        {
18316          "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00118",
18317          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag"
18318        },
18319        {
18320          "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00119",
18321          "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"
18322        },
18323        {
18324          "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00120",
18325          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
18326        },
18327        {
18328          "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00121",
18329          "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"
18330        },
18331        {
18332          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-parameter",
18333          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
18334        },
18335        {
18336          "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-parameter",
18337          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
18338        },
18339        {
18340          "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-parameter",
18341          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
18342        },
18343        {
18344          "vuid": "VUID-vkCmdCopyBuffer-pRegions-parameter",
18345          "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"
18346        },
18347        {
18348          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-recording",
18349          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18350        },
18351        {
18352          "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-cmdpool",
18353          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
18354        },
18355        {
18356          "vuid": "VUID-vkCmdCopyBuffer-renderpass",
18357          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
18358        },
18359        {
18360          "vuid": "VUID-vkCmdCopyBuffer-regionCount-arraylength",
18361          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18362        },
18363        {
18364          "vuid": "VUID-vkCmdCopyBuffer-commonparent",
18365          "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>"
18366        }
18367      ]
18368    },
18369    "VkBufferCopy": {
18370      "core": [
18371        {
18372          "vuid": "VUID-VkBufferCopy-size-01988",
18373          "text": " The <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18374        }
18375      ]
18376    },
18377    "vkCmdCopyBuffer2KHR": {
18378      "(VK_VERSION_1_1)": [
18379        {
18380          "vuid": "VUID-vkCmdCopyBuffer2KHR-commandBuffer-01822",
18381          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
18382        },
18383        {
18384          "vuid": "VUID-vkCmdCopyBuffer2KHR-commandBuffer-01823",
18385          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
18386        },
18387        {
18388          "vuid": "VUID-vkCmdCopyBuffer2KHR-commandBuffer-01824",
18389          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
18390        }
18391      ],
18392      "(VK_KHR_copy_commands2)": [
18393        {
18394          "vuid": "VUID-vkCmdCopyBuffer2KHR-commandBuffer-parameter",
18395          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
18396        },
18397        {
18398          "vuid": "VUID-vkCmdCopyBuffer2KHR-pCopyBufferInfo-parameter",
18399          "text": " <code>pCopyBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyBufferInfo2KHR\">VkCopyBufferInfo2KHR</a> structure"
18400        },
18401        {
18402          "vuid": "VUID-vkCmdCopyBuffer2KHR-commandBuffer-recording",
18403          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18404        },
18405        {
18406          "vuid": "VUID-vkCmdCopyBuffer2KHR-commandBuffer-cmdpool",
18407          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
18408        },
18409        {
18410          "vuid": "VUID-vkCmdCopyBuffer2KHR-renderpass",
18411          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
18412        }
18413      ]
18414    },
18415    "VkCopyBufferInfo2KHR": {
18416      "core": [
18417        {
18418          "vuid": "VUID-VkCopyBufferInfo2KHR-srcOffset-00113",
18419          "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>"
18420        },
18421        {
18422          "vuid": "VUID-VkCopyBufferInfo2KHR-dstOffset-00114",
18423          "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>"
18424        },
18425        {
18426          "vuid": "VUID-VkCopyBufferInfo2KHR-size-00115",
18427          "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>"
18428        },
18429        {
18430          "vuid": "VUID-VkCopyBufferInfo2KHR-size-00116",
18431          "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>"
18432        },
18433        {
18434          "vuid": "VUID-VkCopyBufferInfo2KHR-pRegions-00117",
18435          "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"
18436        },
18437        {
18438          "vuid": "VUID-VkCopyBufferInfo2KHR-srcBuffer-00118",
18439          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag"
18440        },
18441        {
18442          "vuid": "VUID-VkCopyBufferInfo2KHR-srcBuffer-00119",
18443          "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"
18444        },
18445        {
18446          "vuid": "VUID-VkCopyBufferInfo2KHR-dstBuffer-00120",
18447          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
18448        },
18449        {
18450          "vuid": "VUID-VkCopyBufferInfo2KHR-dstBuffer-00121",
18451          "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"
18452        }
18453      ],
18454      "(VK_KHR_copy_commands2)": [
18455        {
18456          "vuid": "VUID-VkCopyBufferInfo2KHR-sType-sType",
18457          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR</code>"
18458        },
18459        {
18460          "vuid": "VUID-VkCopyBufferInfo2KHR-pNext-pNext",
18461          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
18462        },
18463        {
18464          "vuid": "VUID-VkCopyBufferInfo2KHR-srcBuffer-parameter",
18465          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
18466        },
18467        {
18468          "vuid": "VUID-VkCopyBufferInfo2KHR-dstBuffer-parameter",
18469          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
18470        },
18471        {
18472          "vuid": "VUID-VkCopyBufferInfo2KHR-pRegions-parameter",
18473          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferCopy2KHR\">VkBufferCopy2KHR</a> structures"
18474        },
18475        {
18476          "vuid": "VUID-VkCopyBufferInfo2KHR-regionCount-arraylength",
18477          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18478        },
18479        {
18480          "vuid": "VUID-VkCopyBufferInfo2KHR-commonparent",
18481          "text": " Both of <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>"
18482        }
18483      ]
18484    },
18485    "VkBufferCopy2KHR": {
18486      "core": [
18487        {
18488          "vuid": "VUID-VkBufferCopy2KHR-size-01988",
18489          "text": " The <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18490        }
18491      ],
18492      "(VK_KHR_copy_commands2)": [
18493        {
18494          "vuid": "VUID-VkBufferCopy2KHR-sType-sType",
18495          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR</code>"
18496        },
18497        {
18498          "vuid": "VUID-VkBufferCopy2KHR-pNext-pNext",
18499          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
18500        }
18501      ]
18502    },
18503    "vkCmdCopyImage": {
18504      "(VK_VERSION_1_1)": [
18505        {
18506          "vuid": "VUID-vkCmdCopyImage-commandBuffer-01825",
18507          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
18508        },
18509        {
18510          "vuid": "VUID-vkCmdCopyImage-commandBuffer-01826",
18511          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
18512        },
18513        {
18514          "vuid": "VUID-vkCmdCopyImage-commandBuffer-01827",
18515          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
18516        }
18517      ],
18518      "core": [
18519        {
18520          "vuid": "VUID-vkCmdCopyImage-pRegions-00124",
18521          "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"
18522        },
18523        {
18524          "vuid": "VUID-vkCmdCopyImage-srcImage-00126",
18525          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
18526        },
18527        {
18528          "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00128",
18529          "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>"
18530        },
18531        {
18532          "vuid": "VUID-vkCmdCopyImage-dstImage-00131",
18533          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
18534        },
18535        {
18536          "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00133",
18537          "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>"
18538        },
18539        {
18540          "vuid": "VUID-vkCmdCopyImage-srcImage-00136",
18541          "text": " The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> match"
18542        },
18543        {
18544          "vuid": "VUID-vkCmdCopyImage-srcSubresource-01696",
18545          "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"
18546        },
18547        {
18548          "vuid": "VUID-vkCmdCopyImage-dstSubresource-01697",
18549          "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"
18550        },
18551        {
18552          "vuid": "VUID-vkCmdCopyImage-srcSubresource-01698",
18553          "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"
18554        },
18555        {
18556          "vuid": "VUID-vkCmdCopyImage-dstSubresource-01699",
18557          "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"
18558        },
18559        {
18560          "vuid": "VUID-vkCmdCopyImage-srcOffset-01783",
18561          "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>"
18562        },
18563        {
18564          "vuid": "VUID-vkCmdCopyImage-dstOffset-01784",
18565          "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>"
18566        },
18567        {
18568          "vuid": "VUID-vkCmdCopyImage-aspectMask-00142",
18569          "text": " For each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>"
18570        },
18571        {
18572          "vuid": "VUID-vkCmdCopyImage-aspectMask-00143",
18573          "text": " For each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>"
18574        },
18575        {
18576          "vuid": "VUID-vkCmdCopyImage-srcOffset-00144",
18577          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>srcSubresource</code> of <code>srcImage</code>"
18578        },
18579        {
18580          "vuid": "VUID-vkCmdCopyImage-srcOffset-00145",
18581          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>srcSubresource</code> of <code>srcImage</code>"
18582        },
18583        {
18584          "vuid": "VUID-vkCmdCopyImage-srcImage-00146",
18585          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
18586        },
18587        {
18588          "vuid": "VUID-vkCmdCopyImage-srcOffset-00147",
18589          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>srcSubresource</code> of <code>srcImage</code>"
18590        },
18591        {
18592          "vuid": "VUID-vkCmdCopyImage-srcImage-01785",
18593          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
18594        },
18595        {
18596          "vuid": "VUID-vkCmdCopyImage-dstImage-01786",
18597          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
18598        },
18599        {
18600          "vuid": "VUID-vkCmdCopyImage-srcImage-01787",
18601          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>"
18602        },
18603        {
18604          "vuid": "VUID-vkCmdCopyImage-dstImage-01788",
18605          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>"
18606        },
18607        {
18608          "vuid": "VUID-vkCmdCopyImage-dstOffset-00150",
18609          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>dstSubresource</code> of <code>dstImage</code>"
18610        },
18611        {
18612          "vuid": "VUID-vkCmdCopyImage-dstOffset-00151",
18613          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>dstSubresource</code> of <code>dstImage</code>"
18614        },
18615        {
18616          "vuid": "VUID-vkCmdCopyImage-dstImage-00152",
18617          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
18618        },
18619        {
18620          "vuid": "VUID-vkCmdCopyImage-dstOffset-00153",
18621          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>dstSubresource</code> of <code>dstImage</code>"
18622        },
18623        {
18624          "vuid": "VUID-vkCmdCopyImage-srcImage-01727",
18625          "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, all members of <code>srcOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
18626        },
18627        {
18628          "vuid": "VUID-vkCmdCopyImage-srcImage-01728",
18629          "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <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 width of the specified <code>srcSubresource</code> of <code>srcImage</code>"
18630        },
18631        {
18632          "vuid": "VUID-vkCmdCopyImage-srcImage-01729",
18633          "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <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 height of the specified <code>srcSubresource</code> of <code>srcImage</code>"
18634        },
18635        {
18636          "vuid": "VUID-vkCmdCopyImage-srcImage-01730",
18637          "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <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 depth of the specified <code>srcSubresource</code> of <code>srcImage</code>"
18638        },
18639        {
18640          "vuid": "VUID-vkCmdCopyImage-dstImage-01731",
18641          "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, all members of <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
18642        },
18643        {
18644          "vuid": "VUID-vkCmdCopyImage-dstImage-01732",
18645          "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <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 width of the specified <code>dstSubresource</code> of <code>dstImage</code>"
18646        },
18647        {
18648          "vuid": "VUID-vkCmdCopyImage-dstImage-01733",
18649          "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <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 height of the specified <code>dstSubresource</code> of <code>dstImage</code>"
18650        },
18651        {
18652          "vuid": "VUID-vkCmdCopyImage-dstImage-01734",
18653          "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <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 depth of the specified <code>dstSubresource</code> of <code>dstImage</code>"
18654        },
18655        {
18656          "vuid": "VUID-vkCmdCopyImage-commandBuffer-parameter",
18657          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
18658        },
18659        {
18660          "vuid": "VUID-vkCmdCopyImage-srcImage-parameter",
18661          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
18662        },
18663        {
18664          "vuid": "VUID-vkCmdCopyImage-srcImageLayout-parameter",
18665          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
18666        },
18667        {
18668          "vuid": "VUID-vkCmdCopyImage-dstImage-parameter",
18669          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
18670        },
18671        {
18672          "vuid": "VUID-vkCmdCopyImage-dstImageLayout-parameter",
18673          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
18674        },
18675        {
18676          "vuid": "VUID-vkCmdCopyImage-pRegions-parameter",
18677          "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"
18678        },
18679        {
18680          "vuid": "VUID-vkCmdCopyImage-commandBuffer-recording",
18681          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18682        },
18683        {
18684          "vuid": "VUID-vkCmdCopyImage-commandBuffer-cmdpool",
18685          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
18686        },
18687        {
18688          "vuid": "VUID-vkCmdCopyImage-renderpass",
18689          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
18690        },
18691        {
18692          "vuid": "VUID-vkCmdCopyImage-regionCount-arraylength",
18693          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18694        },
18695        {
18696          "vuid": "VUID-vkCmdCopyImage-commonparent",
18697          "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>"
18698        }
18699      ],
18700      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
18701        {
18702          "vuid": "VUID-vkCmdCopyImage-srcImage-01995",
18703          "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>"
18704        },
18705        {
18706          "vuid": "VUID-vkCmdCopyImage-dstImage-01996",
18707          "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>"
18708        },
18709        {
18710          "vuid": "VUID-vkCmdCopyImage-srcImage-04443",
18711          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and and <code>srcSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
18712        },
18713        {
18714          "vuid": "VUID-vkCmdCopyImage-dstImage-04444",
18715          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
18716        },
18717        {
18718          "vuid": "VUID-vkCmdCopyImage-srcImage-01790",
18719          "text": " If <code>srcImage</code> and <code>dstImage</code> are both of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
18720        },
18721        {
18722          "vuid": "VUID-vkCmdCopyImage-srcImage-01791",
18723          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> equal <code>srcSubresource.layerCount</code>"
18724        },
18725        {
18726          "vuid": "VUID-vkCmdCopyImage-dstImage-01792",
18727          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> equal <code>dstSubresource.layerCount</code>"
18728        }
18729      ],
18730      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
18731        {
18732          "vuid": "VUID-vkCmdCopyImage-srcImage-00127",
18733          "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"
18734        },
18735        {
18736          "vuid": "VUID-vkCmdCopyImage-dstImage-00132",
18737          "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"
18738        },
18739        {
18740          "vuid": "VUID-vkCmdCopyImage-srcImage-00135",
18741          "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>"
18742        }
18743      ],
18744      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
18745        {
18746          "vuid": "VUID-vkCmdCopyImage-srcImage-01546",
18747          "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"
18748        },
18749        {
18750          "vuid": "VUID-vkCmdCopyImage-dstImage-01547",
18751          "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"
18752        },
18753        {
18754          "vuid": "VUID-vkCmdCopyImage-srcImage-01548",
18755          "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>"
18756        },
18757        {
18758          "vuid": "VUID-vkCmdCopyImage-None-01549",
18759          "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"
18760        },
18761        {
18762          "vuid": "VUID-vkCmdCopyImage-srcImage-01551",
18763          "text": " If neither <code>srcImage</code> nor <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> and <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> match"
18764        },
18765        {
18766          "vuid": "VUID-vkCmdCopyImage-srcImage-01552",
18767          "text": " If <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>srcSubresource.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>"
18768        },
18769        {
18770          "vuid": "VUID-vkCmdCopyImage-srcImage-01553",
18771          "text": " If <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>srcSubresource.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>"
18772        },
18773        {
18774          "vuid": "VUID-vkCmdCopyImage-dstImage-01554",
18775          "text": " If <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>dstSubresource.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>"
18776        },
18777        {
18778          "vuid": "VUID-vkCmdCopyImage-dstImage-01555",
18779          "text": " If <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>dstSubresource.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>"
18780        },
18781        {
18782          "vuid": "VUID-vkCmdCopyImage-srcImage-01556",
18783          "text": " If <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, then for each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
18784        },
18785        {
18786          "vuid": "VUID-vkCmdCopyImage-dstImage-01557",
18787          "text": " If <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, then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
18788        }
18789      ],
18790      "!(VK_KHR_shared_presentable_image)": [
18791        {
18792          "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00129",
18793          "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>"
18794        },
18795        {
18796          "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00134",
18797          "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>"
18798        }
18799      ],
18800      "(VK_KHR_shared_presentable_image)": [
18801        {
18802          "vuid": "VUID-vkCmdCopyImage-srcImageLayout-01917",
18803          "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>"
18804        },
18805        {
18806          "vuid": "VUID-vkCmdCopyImage-dstImageLayout-01395",
18807          "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>"
18808        }
18809      ],
18810      "(VK_EXT_fragment_density_map)": [
18811        {
18812          "vuid": "VUID-vkCmdCopyImage-dstImage-02542",
18813          "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>"
18814        }
18815      ],
18816      "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
18817        {
18818          "vuid": "VUID-vkCmdCopyImage-srcImage-00139",
18819          "text": " If either <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> and <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> each be <code>0</code>, and <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> each be <code>1</code>"
18820        },
18821        {
18822          "vuid": "VUID-vkCmdCopyImage-srcImage-01789",
18823          "text": " If <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
18824        }
18825      ]
18826    },
18827    "VkImageCopy": {
18828      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
18829        {
18830          "vuid": "VUID-VkImageCopy-aspectMask-00137",
18831          "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
18832        }
18833      ],
18834      "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
18835        {
18836          "vuid": "VUID-VkImageCopy-layerCount-00138",
18837          "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
18838        }
18839      ],
18840      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
18841        {
18842          "vuid": "VUID-VkImageCopy-extent-00140",
18843          "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)"
18844        }
18845      ],
18846      "core": [
18847        {
18848          "vuid": "VUID-VkImageCopy-srcSubresource-parameter",
18849          "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
18850        },
18851        {
18852          "vuid": "VUID-VkImageCopy-dstSubresource-parameter",
18853          "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
18854        }
18855      ]
18856    },
18857    "VkImageSubresourceLayers": {
18858      "core": [
18859        {
18860          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00167",
18861          "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>"
18862        },
18863        {
18864          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00168",
18865          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
18866        },
18867        {
18868          "vuid": "VUID-VkImageSubresourceLayers-layerCount-01700",
18869          "text": " <code>layerCount</code> <strong class=\"purple\">must</strong> be greater than 0"
18870        },
18871        {
18872          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-parameter",
18873          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
18874        },
18875        {
18876          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask",
18877          "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18878        }
18879      ],
18880      "(VK_EXT_image_drm_format_modifier)": [
18881        {
18882          "vuid": "VUID-VkImageSubresourceLayers-aspectMask-02247",
18883          "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>"
18884        }
18885      ]
18886    },
18887    "vkCmdCopyImage2KHR": {
18888      "(VK_VERSION_1_1)": [
18889        {
18890          "vuid": "VUID-vkCmdCopyImage2KHR-commandBuffer-01825",
18891          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
18892        },
18893        {
18894          "vuid": "VUID-vkCmdCopyImage2KHR-commandBuffer-01826",
18895          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
18896        },
18897        {
18898          "vuid": "VUID-vkCmdCopyImage2KHR-commandBuffer-01827",
18899          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
18900        }
18901      ],
18902      "(VK_KHR_copy_commands2)": [
18903        {
18904          "vuid": "VUID-vkCmdCopyImage2KHR-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-vkCmdCopyImage2KHR-pCopyImageInfo-parameter",
18909          "text": " <code>pCopyImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyImageInfo2KHR\">VkCopyImageInfo2KHR</a> structure"
18910        },
18911        {
18912          "vuid": "VUID-vkCmdCopyImage2KHR-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-vkCmdCopyImage2KHR-commandBuffer-cmdpool",
18917          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
18918        },
18919        {
18920          "vuid": "VUID-vkCmdCopyImage2KHR-renderpass",
18921          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
18922        }
18923      ]
18924    },
18925    "VkCopyImageInfo2KHR": {
18926      "core": [
18927        {
18928          "vuid": "VUID-VkCopyImageInfo2KHR-pRegions-00124",
18929          "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"
18930        },
18931        {
18932          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-00126",
18933          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
18934        },
18935        {
18936          "vuid": "VUID-VkCopyImageInfo2KHR-srcImageLayout-00128",
18937          "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>"
18938        },
18939        {
18940          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-00131",
18941          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
18942        },
18943        {
18944          "vuid": "VUID-VkCopyImageInfo2KHR-dstImageLayout-00133",
18945          "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>"
18946        },
18947        {
18948          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-00136",
18949          "text": " The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> match"
18950        },
18951        {
18952          "vuid": "VUID-VkCopyImageInfo2KHR-srcSubresource-01696",
18953          "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"
18954        },
18955        {
18956          "vuid": "VUID-VkCopyImageInfo2KHR-dstSubresource-01697",
18957          "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"
18958        },
18959        {
18960          "vuid": "VUID-VkCopyImageInfo2KHR-srcSubresource-01698",
18961          "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"
18962        },
18963        {
18964          "vuid": "VUID-VkCopyImageInfo2KHR-dstSubresource-01699",
18965          "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"
18966        },
18967        {
18968          "vuid": "VUID-VkCopyImageInfo2KHR-srcOffset-01783",
18969          "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>"
18970        },
18971        {
18972          "vuid": "VUID-VkCopyImageInfo2KHR-dstOffset-01784",
18973          "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>"
18974        },
18975        {
18976          "vuid": "VUID-VkCopyImageInfo2KHR-aspectMask-00142",
18977          "text": " For each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>"
18978        },
18979        {
18980          "vuid": "VUID-VkCopyImageInfo2KHR-aspectMask-00143",
18981          "text": " For each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>"
18982        },
18983        {
18984          "vuid": "VUID-VkCopyImageInfo2KHR-srcOffset-00144",
18985          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>srcSubresource</code> of <code>srcImage</code>"
18986        },
18987        {
18988          "vuid": "VUID-VkCopyImageInfo2KHR-srcOffset-00145",
18989          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>srcSubresource</code> of <code>srcImage</code>"
18990        },
18991        {
18992          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-00146",
18993          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
18994        },
18995        {
18996          "vuid": "VUID-VkCopyImageInfo2KHR-srcOffset-00147",
18997          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>srcSubresource</code> of <code>srcImage</code>"
18998        },
18999        {
19000          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01785",
19001          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
19002        },
19003        {
19004          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01786",
19005          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
19006        },
19007        {
19008          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01787",
19009          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>"
19010        },
19011        {
19012          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01788",
19013          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>"
19014        },
19015        {
19016          "vuid": "VUID-VkCopyImageInfo2KHR-dstOffset-00150",
19017          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>dstSubresource</code> of <code>dstImage</code>"
19018        },
19019        {
19020          "vuid": "VUID-VkCopyImageInfo2KHR-dstOffset-00151",
19021          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>dstSubresource</code> of <code>dstImage</code>"
19022        },
19023        {
19024          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-00152",
19025          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
19026        },
19027        {
19028          "vuid": "VUID-VkCopyImageInfo2KHR-dstOffset-00153",
19029          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>dstSubresource</code> of <code>dstImage</code>"
19030        },
19031        {
19032          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01727",
19033          "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, all members of <code>srcOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
19034        },
19035        {
19036          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01728",
19037          "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <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 width of the specified <code>srcSubresource</code> of <code>srcImage</code>"
19038        },
19039        {
19040          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01729",
19041          "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <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 height of the specified <code>srcSubresource</code> of <code>srcImage</code>"
19042        },
19043        {
19044          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01730",
19045          "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <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 depth of the specified <code>srcSubresource</code> of <code>srcImage</code>"
19046        },
19047        {
19048          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01731",
19049          "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, all members of <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
19050        },
19051        {
19052          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01732",
19053          "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <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 width of the specified <code>dstSubresource</code> of <code>dstImage</code>"
19054        },
19055        {
19056          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01733",
19057          "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <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 height of the specified <code>dstSubresource</code> of <code>dstImage</code>"
19058        },
19059        {
19060          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01734",
19061          "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <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 depth of the specified <code>dstSubresource</code> of <code>dstImage</code>"
19062        }
19063      ],
19064      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
19065        {
19066          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01995",
19067          "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>"
19068        },
19069        {
19070          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01996",
19071          "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>"
19072        },
19073        {
19074          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-04443",
19075          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and and <code>srcSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
19076        },
19077        {
19078          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-04444",
19079          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
19080        },
19081        {
19082          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01790",
19083          "text": " If <code>srcImage</code> and <code>dstImage</code> are both of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
19084        },
19085        {
19086          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01791",
19087          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> equal <code>srcSubresource.layerCount</code>"
19088        },
19089        {
19090          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01792",
19091          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> equal <code>dstSubresource.layerCount</code>"
19092        }
19093      ],
19094      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
19095        {
19096          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-00127",
19097          "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"
19098        },
19099        {
19100          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-00132",
19101          "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"
19102        },
19103        {
19104          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-00135",
19105          "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>"
19106        }
19107      ],
19108      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
19109        {
19110          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01546",
19111          "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"
19112        },
19113        {
19114          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01547",
19115          "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"
19116        },
19117        {
19118          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01548",
19119          "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>"
19120        },
19121        {
19122          "vuid": "VUID-VkCopyImageInfo2KHR-None-01549",
19123          "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"
19124        },
19125        {
19126          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01551",
19127          "text": " If neither <code>srcImage</code> nor <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> and <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> match"
19128        },
19129        {
19130          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01552",
19131          "text": " If <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>srcSubresource.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>"
19132        },
19133        {
19134          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01553",
19135          "text": " If <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>srcSubresource.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>"
19136        },
19137        {
19138          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01554",
19139          "text": " If <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>dstSubresource.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>"
19140        },
19141        {
19142          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01555",
19143          "text": " If <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>dstSubresource.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>"
19144        },
19145        {
19146          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01556",
19147          "text": " If <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, then for each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
19148        },
19149        {
19150          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01557",
19151          "text": " If <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, then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
19152        }
19153      ],
19154      "!(VK_KHR_shared_presentable_image)": [
19155        {
19156          "vuid": "VUID-VkCopyImageInfo2KHR-srcImageLayout-00129",
19157          "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>"
19158        },
19159        {
19160          "vuid": "VUID-VkCopyImageInfo2KHR-dstImageLayout-00134",
19161          "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>"
19162        }
19163      ],
19164      "(VK_KHR_shared_presentable_image)": [
19165        {
19166          "vuid": "VUID-VkCopyImageInfo2KHR-srcImageLayout-01917",
19167          "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>"
19168        },
19169        {
19170          "vuid": "VUID-VkCopyImageInfo2KHR-dstImageLayout-01395",
19171          "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>"
19172        }
19173      ],
19174      "(VK_EXT_fragment_density_map)": [
19175        {
19176          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-02542",
19177          "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>"
19178        }
19179      ],
19180      "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
19181        {
19182          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-00139",
19183          "text": " If either <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> and <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> each be <code>0</code>, and <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> each be <code>1</code>"
19184        },
19185        {
19186          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01789",
19187          "text": " If <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
19188        }
19189      ],
19190      "(VK_KHR_copy_commands2)": [
19191        {
19192          "vuid": "VUID-VkCopyImageInfo2KHR-sType-sType",
19193          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR</code>"
19194        },
19195        {
19196          "vuid": "VUID-VkCopyImageInfo2KHR-pNext-pNext",
19197          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19198        },
19199        {
19200          "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-parameter",
19201          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
19202        },
19203        {
19204          "vuid": "VUID-VkCopyImageInfo2KHR-srcImageLayout-parameter",
19205          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
19206        },
19207        {
19208          "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-parameter",
19209          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
19210        },
19211        {
19212          "vuid": "VUID-VkCopyImageInfo2KHR-dstImageLayout-parameter",
19213          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
19214        },
19215        {
19216          "vuid": "VUID-VkCopyImageInfo2KHR-pRegions-parameter",
19217          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageCopy2KHR\">VkImageCopy2KHR</a> structures"
19218        },
19219        {
19220          "vuid": "VUID-VkCopyImageInfo2KHR-regionCount-arraylength",
19221          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
19222        },
19223        {
19224          "vuid": "VUID-VkCopyImageInfo2KHR-commonparent",
19225          "text": " Both of <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>"
19226        }
19227      ]
19228    },
19229    "VkImageCopy2KHR": {
19230      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
19231        {
19232          "vuid": "VUID-VkImageCopy2KHR-aspectMask-00137",
19233          "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
19234        }
19235      ],
19236      "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
19237        {
19238          "vuid": "VUID-VkImageCopy2KHR-layerCount-00138",
19239          "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
19240        }
19241      ],
19242      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
19243        {
19244          "vuid": "VUID-VkImageCopy2KHR-extent-00140",
19245          "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)"
19246        }
19247      ],
19248      "(VK_KHR_copy_commands2)": [
19249        {
19250          "vuid": "VUID-VkImageCopy2KHR-sType-sType",
19251          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR</code>"
19252        },
19253        {
19254          "vuid": "VUID-VkImageCopy2KHR-pNext-pNext",
19255          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19256        },
19257        {
19258          "vuid": "VUID-VkImageCopy2KHR-srcSubresource-parameter",
19259          "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
19260        },
19261        {
19262          "vuid": "VUID-VkImageCopy2KHR-dstSubresource-parameter",
19263          "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
19264        }
19265      ]
19266    },
19267    "vkCmdCopyBufferToImage": {
19268      "(VK_VERSION_1_1)": [
19269        {
19270          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01828",
19271          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
19272        },
19273        {
19274          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01829",
19275          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
19276        },
19277        {
19278          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01830",
19279          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
19280        }
19281      ],
19282      "core": [
19283        {
19284          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171",
19285          "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>"
19286        },
19287        {
19288          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00172",
19289          "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>"
19290        },
19291        {
19292          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00173",
19293          "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"
19294        },
19295        {
19296          "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00174",
19297          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag"
19298        },
19299        {
19300          "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00176",
19301          "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"
19302        },
19303        {
19304          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00177",
19305          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
19306        },
19307        {
19308          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00178",
19309          "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"
19310        },
19311        {
19312          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00179",
19313          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
19314        },
19315        {
19316          "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00180",
19317          "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>"
19318        },
19319        {
19320          "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01701",
19321          "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"
19322        },
19323        {
19324          "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01702",
19325          "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"
19326        },
19327        {
19328          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-01793",
19329          "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>"
19330        },
19331        {
19332          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-04052",
19333          "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>"
19334        },
19335        {
19336          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-04053",
19337          "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>"
19338        },
19339        {
19340          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-04477",
19341          "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>, for each element of <code>pRegions</code>, the <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>."
19342        },
19343        {
19344          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-00197",
19345          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>imageSubresource</code> of {imageparam}"
19346        },
19347        {
19348          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-00198",
19349          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>imageSubresource</code> of {imageparam}"
19350        },
19351        {
19352          "vuid": "VUID-vkCmdCopyBufferToImage-srcImage-00199",
19353          "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
19354        },
19355        {
19356          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-00200",
19357          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>imageSubresource</code> of {imageparam}"
19358        },
19359        {
19360          "vuid": "VUID-vkCmdCopyBufferToImage-srcImage-00201",
19361          "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <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>"
19362        },
19363        {
19364          "vuid": "VUID-vkCmdCopyBufferToImage-bufferRowLength-00203",
19365          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width"
19366        },
19367        {
19368          "vuid": "VUID-vkCmdCopyBufferToImage-bufferImageHeight-00204",
19369          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height"
19370        },
19371        {
19372          "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-00205",
19373          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
19374        },
19375        {
19376          "vuid": "VUID-vkCmdCopyBufferToImage-bufferOffset-00206",
19377          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes"
19378        },
19379        {
19380          "vuid": "VUID-vkCmdCopyBufferToImage-imageExtent-00207",
19381          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <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 width of the specified <code>imageSubresource</code> of {imageparam}"
19382        },
19383        {
19384          "vuid": "VUID-vkCmdCopyBufferToImage-imageExtent-00208",
19385          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <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 height of the specified <code>imageSubresource</code> of {imageparam}"
19386        },
19387        {
19388          "vuid": "VUID-vkCmdCopyBufferToImage-imageExtent-00209",
19389          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <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 depth of the specified <code>imageSubresource</code> of {imageparam}"
19390        },
19391        {
19392          "vuid": "VUID-vkCmdCopyBufferToImage-aspectMask-00211",
19393          "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in {imageparam}"
19394        },
19395        {
19396          "vuid": "VUID-vkCmdCopyBufferToImage-baseArrayLayer-00213",
19397          "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
19398        },
19399        {
19400          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-parameter",
19401          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
19402        },
19403        {
19404          "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-parameter",
19405          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
19406        },
19407        {
19408          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-parameter",
19409          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
19410        },
19411        {
19412          "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter",
19413          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
19414        },
19415        {
19416          "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-parameter",
19417          "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"
19418        },
19419        {
19420          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-recording",
19421          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19422        },
19423        {
19424          "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-cmdpool",
19425          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
19426        },
19427        {
19428          "vuid": "VUID-vkCmdCopyBufferToImage-renderpass",
19429          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
19430        },
19431        {
19432          "vuid": "VUID-vkCmdCopyBufferToImage-regionCount-arraylength",
19433          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
19434        },
19435        {
19436          "vuid": "VUID-vkCmdCopyBufferToImage-commonparent",
19437          "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>"
19438        }
19439      ],
19440      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
19441        {
19442          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-01997",
19443          "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>"
19444        }
19445      ],
19446      "!(VK_KHR_shared_presentable_image)": [
19447        {
19448          "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00181",
19449          "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>"
19450        }
19451      ],
19452      "(VK_KHR_shared_presentable_image)": [
19453        {
19454          "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-01396",
19455          "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>"
19456        }
19457      ],
19458      "(VK_EXT_fragment_density_map)": [
19459        {
19460          "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-02543",
19461          "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>"
19462        }
19463      ],
19464      "!(VK_EXT_depth_range_unrestricted)": [
19465        {
19466          "vuid": "VUID-vkCmdCopyBufferToImage-None-00214",
19467          "text": " For each element of <code>pRegions</code> whose <code>imageSubresource</code> contains a depth aspect, the data in <code>srcBuffer</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>"
19468        }
19469      ],
19470      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
19471        {
19472          "vuid": "VUID-vkCmdCopyBufferToImage-bufferOffset-00193",
19473          "text": " If {imageparam} does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format&#8217;s texel block size"
19474        }
19475      ],
19476      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
19477        {
19478          "vuid": "VUID-vkCmdCopyBufferToImage-bufferOffset-01558",
19479          "text": " If {imageparam} does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format&#8217;s texel block size"
19480        },
19481        {
19482          "vuid": "VUID-vkCmdCopyBufferToImage-bufferOffset-01559",
19483          "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <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>"
19484        },
19485        {
19486          "vuid": "VUID-vkCmdCopyBufferToImage-aspectMask-01560",
19487          "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>imageSubresource.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> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for image formats with three planes)"
19488        }
19489      ]
19490    },
19491    "vkCmdCopyImageToBuffer": {
19492      "(VK_VERSION_1_1)": [
19493        {
19494          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01831",
19495          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
19496        },
19497        {
19498          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01832",
19499          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
19500        },
19501        {
19502          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01833",
19503          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
19504        }
19505      ],
19506      "core": [
19507        {
19508          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183",
19509          "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>"
19510        },
19511        {
19512          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00182",
19513          "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>"
19514        },
19515        {
19516          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00184",
19517          "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"
19518        },
19519        {
19520          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00186",
19521          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
19522        },
19523        {
19524          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00187",
19525          "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"
19526        },
19527        {
19528          "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00191",
19529          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
19530        },
19531        {
19532          "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00192",
19533          "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"
19534        },
19535        {
19536          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00188",
19537          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
19538        },
19539        {
19540          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189",
19541          "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>"
19542        },
19543        {
19544          "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01703",
19545          "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"
19546        },
19547        {
19548          "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01704",
19549          "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"
19550        },
19551        {
19552          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-01794",
19553          "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>"
19554        },
19555        {
19556          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-04054",
19557          "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>"
19558        },
19559        {
19560          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-04055",
19561          "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>"
19562        },
19563        {
19564          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-00197",
19565          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>imageSubresource</code> of {imageparam}"
19566        },
19567        {
19568          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-00198",
19569          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>imageSubresource</code> of {imageparam}"
19570        },
19571        {
19572          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00199",
19573          "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
19574        },
19575        {
19576          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-00200",
19577          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>imageSubresource</code> of {imageparam}"
19578        },
19579        {
19580          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00201",
19581          "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <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>"
19582        },
19583        {
19584          "vuid": "VUID-vkCmdCopyImageToBuffer-bufferRowLength-00203",
19585          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width"
19586        },
19587        {
19588          "vuid": "VUID-vkCmdCopyImageToBuffer-bufferImageHeight-00204",
19589          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height"
19590        },
19591        {
19592          "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-00205",
19593          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
19594        },
19595        {
19596          "vuid": "VUID-vkCmdCopyImageToBuffer-bufferOffset-00206",
19597          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes"
19598        },
19599        {
19600          "vuid": "VUID-vkCmdCopyImageToBuffer-imageExtent-00207",
19601          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <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 width of the specified <code>imageSubresource</code> of {imageparam}"
19602        },
19603        {
19604          "vuid": "VUID-vkCmdCopyImageToBuffer-imageExtent-00208",
19605          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <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 height of the specified <code>imageSubresource</code> of {imageparam}"
19606        },
19607        {
19608          "vuid": "VUID-vkCmdCopyImageToBuffer-imageExtent-00209",
19609          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <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 depth of the specified <code>imageSubresource</code> of {imageparam}"
19610        },
19611        {
19612          "vuid": "VUID-vkCmdCopyImageToBuffer-aspectMask-00211",
19613          "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in {imageparam}"
19614        },
19615        {
19616          "vuid": "VUID-vkCmdCopyImageToBuffer-baseArrayLayer-00213",
19617          "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
19618        },
19619        {
19620          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter",
19621          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
19622        },
19623        {
19624          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-parameter",
19625          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
19626        },
19627        {
19628          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter",
19629          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
19630        },
19631        {
19632          "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter",
19633          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
19634        },
19635        {
19636          "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-parameter",
19637          "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"
19638        },
19639        {
19640          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-recording",
19641          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19642        },
19643        {
19644          "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-cmdpool",
19645          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
19646        },
19647        {
19648          "vuid": "VUID-vkCmdCopyImageToBuffer-renderpass",
19649          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
19650        },
19651        {
19652          "vuid": "VUID-vkCmdCopyImageToBuffer-regionCount-arraylength",
19653          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
19654        },
19655        {
19656          "vuid": "VUID-vkCmdCopyImageToBuffer-commonparent",
19657          "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>"
19658        }
19659      ],
19660      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
19661        {
19662          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-01998",
19663          "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>"
19664        }
19665      ],
19666      "!(VK_KHR_shared_presentable_image)": [
19667        {
19668          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00190",
19669          "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>"
19670        }
19671      ],
19672      "(VK_KHR_shared_presentable_image)": [
19673        {
19674          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397",
19675          "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>"
19676        }
19677      ],
19678      "(VK_EXT_fragment_density_map)": [
19679        {
19680          "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-02544",
19681          "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>"
19682        }
19683      ],
19684      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
19685        {
19686          "vuid": "VUID-vkCmdCopyImageToBuffer-bufferOffset-00193",
19687          "text": " If {imageparam} does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format&#8217;s texel block size"
19688        }
19689      ],
19690      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
19691        {
19692          "vuid": "VUID-vkCmdCopyImageToBuffer-bufferOffset-01558",
19693          "text": " If {imageparam} does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format&#8217;s texel block size"
19694        },
19695        {
19696          "vuid": "VUID-vkCmdCopyImageToBuffer-bufferOffset-01559",
19697          "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <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>"
19698        },
19699        {
19700          "vuid": "VUID-vkCmdCopyImageToBuffer-aspectMask-01560",
19701          "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>imageSubresource.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> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for image formats with three planes)"
19702        }
19703      ]
19704    },
19705    "VkBufferImageCopy": {
19706      "core": [
19707        {
19708          "vuid": "VUID-VkBufferImageCopy-bufferRowLength-00195",
19709          "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>"
19710        },
19711        {
19712          "vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00196",
19713          "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>"
19714        },
19715        {
19716          "vuid": "VUID-VkBufferImageCopy-aspectMask-00212",
19717          "text": " The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set"
19718        },
19719        {
19720          "vuid": "VUID-VkBufferImageCopy-imageSubresource-parameter",
19721          "text": " <code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
19722        }
19723      ]
19724    },
19725    "vkCmdCopyBufferToImage2KHR": {
19726      "(VK_VERSION_1_1)": [
19727        {
19728          "vuid": "VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-01828",
19729          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
19730        },
19731        {
19732          "vuid": "VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-01829",
19733          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
19734        },
19735        {
19736          "vuid": "VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-01830",
19737          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
19738        }
19739      ],
19740      "(VK_KHR_copy_commands2)": [
19741        {
19742          "vuid": "VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-parameter",
19743          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
19744        },
19745        {
19746          "vuid": "VUID-vkCmdCopyBufferToImage2KHR-pCopyBufferToImageInfo-parameter",
19747          "text": " <code>pCopyBufferToImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyBufferToImageInfo2KHR\">VkCopyBufferToImageInfo2KHR</a> structure"
19748        },
19749        {
19750          "vuid": "VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-recording",
19751          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19752        },
19753        {
19754          "vuid": "VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-cmdpool",
19755          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
19756        },
19757        {
19758          "vuid": "VUID-vkCmdCopyBufferToImage2KHR-renderpass",
19759          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
19760        }
19761      ]
19762    },
19763    "VkCopyBufferToImageInfo2KHR": {
19764      "core": [
19765        {
19766          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-00171",
19767          "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>"
19768        },
19769        {
19770          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-00172",
19771          "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>"
19772        },
19773        {
19774          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-00173",
19775          "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"
19776        },
19777        {
19778          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-srcBuffer-00174",
19779          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag"
19780        },
19781        {
19782          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-srcBuffer-00176",
19783          "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"
19784        },
19785        {
19786          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImage-00177",
19787          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
19788        },
19789        {
19790          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImage-00178",
19791          "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"
19792        },
19793        {
19794          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImage-00179",
19795          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
19796        },
19797        {
19798          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-00180",
19799          "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>"
19800        },
19801        {
19802          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageSubresource-01701",
19803          "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"
19804        },
19805        {
19806          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageSubresource-01702",
19807          "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"
19808        },
19809        {
19810          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageOffset-01793",
19811          "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>"
19812        },
19813        {
19814          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-commandBuffer-04052",
19815          "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>"
19816        },
19817        {
19818          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImage-04053",
19819          "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>"
19820        },
19821        {
19822          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-commandBuffer-04477",
19823          "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>, for each element of <code>pRegions</code>, the <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>."
19824        },
19825        {
19826          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00197",
19827          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>imageSubresource</code> of {imageparam}"
19828        },
19829        {
19830          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00198",
19831          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>imageSubresource</code> of {imageparam}"
19832        },
19833        {
19834          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-srcImage-00199",
19835          "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
19836        },
19837        {
19838          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00200",
19839          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>imageSubresource</code> of {imageparam}"
19840        },
19841        {
19842          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-srcImage-00201",
19843          "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <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>"
19844        },
19845        {
19846          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-bufferRowLength-00203",
19847          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width"
19848        },
19849        {
19850          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-bufferImageHeight-00204",
19851          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height"
19852        },
19853        {
19854          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00205",
19855          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
19856        },
19857        {
19858          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-00206",
19859          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes"
19860        },
19861        {
19862          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageExtent-00207",
19863          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <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 width of the specified <code>imageSubresource</code> of {imageparam}"
19864        },
19865        {
19866          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageExtent-00208",
19867          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <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 height of the specified <code>imageSubresource</code> of {imageparam}"
19868        },
19869        {
19870          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageExtent-00209",
19871          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <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 depth of the specified <code>imageSubresource</code> of {imageparam}"
19872        },
19873        {
19874          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-aspectMask-00211",
19875          "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in {imageparam}"
19876        },
19877        {
19878          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-baseArrayLayer-00213",
19879          "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
19880        }
19881      ],
19882      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
19883        {
19884          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImage-01997",
19885          "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>"
19886        }
19887      ],
19888      "!(VK_KHR_shared_presentable_image)": [
19889        {
19890          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-00181",
19891          "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>"
19892        }
19893      ],
19894      "(VK_KHR_shared_presentable_image)": [
19895        {
19896          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-01396",
19897          "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>"
19898        }
19899      ],
19900      "(VK_EXT_fragment_density_map)": [
19901        {
19902          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImage-02543",
19903          "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>"
19904        }
19905      ],
19906      "!(VK_EXT_depth_range_unrestricted)": [
19907        {
19908          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-None-00214",
19909          "text": " For each element of <code>pRegions</code> whose <code>imageSubresource</code> contains a depth aspect, the data in <code>srcBuffer</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>"
19910        }
19911      ],
19912      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
19913        {
19914          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-00193",
19915          "text": " If {imageparam} does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format&#8217;s texel block size"
19916        }
19917      ],
19918      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
19919        {
19920          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-01558",
19921          "text": " If {imageparam} does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format&#8217;s texel block size"
19922        },
19923        {
19924          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-01559",
19925          "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <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>"
19926        },
19927        {
19928          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-aspectMask-01560",
19929          "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>imageSubresource.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> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for image formats with three planes)"
19930        }
19931      ],
19932      "(VK_KHR_copy_commands2)": [
19933        {
19934          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-sType-sType",
19935          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR</code>"
19936        },
19937        {
19938          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pNext-pNext",
19939          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19940        },
19941        {
19942          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-srcBuffer-parameter",
19943          "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
19944        },
19945        {
19946          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImage-parameter",
19947          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
19948        },
19949        {
19950          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-parameter",
19951          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
19952        },
19953        {
19954          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-parameter",
19955          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferImageCopy2KHR\">VkBufferImageCopy2KHR</a> structures"
19956        },
19957        {
19958          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-regionCount-arraylength",
19959          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
19960        },
19961        {
19962          "vuid": "VUID-VkCopyBufferToImageInfo2KHR-commonparent",
19963          "text": " Both of <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>"
19964        }
19965      ]
19966    },
19967    "vkCmdCopyImageToBuffer2KHR": {
19968      "(VK_VERSION_1_1)": [
19969        {
19970          "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-01831",
19971          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
19972        },
19973        {
19974          "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-01832",
19975          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
19976        },
19977        {
19978          "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-01833",
19979          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
19980        }
19981      ],
19982      "(VK_KHR_copy_commands2)": [
19983        {
19984          "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-parameter",
19985          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
19986        },
19987        {
19988          "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-pCopyImageToBufferInfo-parameter",
19989          "text": " <code>pCopyImageToBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyImageToBufferInfo2KHR\">VkCopyImageToBufferInfo2KHR</a> structure"
19990        },
19991        {
19992          "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-recording",
19993          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19994        },
19995        {
19996          "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-cmdpool",
19997          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
19998        },
19999        {
20000          "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-renderpass",
20001          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
20002        }
20003      ]
20004    },
20005    "VkCopyImageToBufferInfo2KHR": {
20006      "core": [
20007        {
20008          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-00183",
20009          "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>"
20010        },
20011        {
20012          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-00182",
20013          "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>"
20014        },
20015        {
20016          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-00184",
20017          "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"
20018        },
20019        {
20020          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-00186",
20021          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
20022        },
20023        {
20024          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-00187",
20025          "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"
20026        },
20027        {
20028          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-00191",
20029          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
20030        },
20031        {
20032          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-00192",
20033          "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"
20034        },
20035        {
20036          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-00188",
20037          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
20038        },
20039        {
20040          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-00189",
20041          "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>"
20042        },
20043        {
20044          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageSubresource-01703",
20045          "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"
20046        },
20047        {
20048          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageSubresource-01704",
20049          "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"
20050        },
20051        {
20052          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageOffset-01794",
20053          "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>"
20054        },
20055        {
20056          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-commandBuffer-04054",
20057          "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>"
20058        },
20059        {
20060          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-04055",
20061          "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>"
20062        },
20063        {
20064          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00197",
20065          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>imageSubresource</code> of {imageparam}"
20066        },
20067        {
20068          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00198",
20069          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>imageSubresource</code> of {imageparam}"
20070        },
20071        {
20072          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-00199",
20073          "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
20074        },
20075        {
20076          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00200",
20077          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>imageSubresource</code> of {imageparam}"
20078        },
20079        {
20080          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-00201",
20081          "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <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>"
20082        },
20083        {
20084          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-bufferRowLength-00203",
20085          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width"
20086        },
20087        {
20088          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-bufferImageHeight-00204",
20089          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height"
20090        },
20091        {
20092          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00205",
20093          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
20094        },
20095        {
20096          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-00206",
20097          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes"
20098        },
20099        {
20100          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00207",
20101          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <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 width of the specified <code>imageSubresource</code> of {imageparam}"
20102        },
20103        {
20104          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00208",
20105          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <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 height of the specified <code>imageSubresource</code> of {imageparam}"
20106        },
20107        {
20108          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00209",
20109          "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <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 depth of the specified <code>imageSubresource</code> of {imageparam}"
20110        },
20111        {
20112          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-aspectMask-00211",
20113          "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in {imageparam}"
20114        },
20115        {
20116          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-baseArrayLayer-00213",
20117          "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
20118        }
20119      ],
20120      "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
20121        {
20122          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-01998",
20123          "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>"
20124        }
20125      ],
20126      "!(VK_KHR_shared_presentable_image)": [
20127        {
20128          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-00190",
20129          "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>"
20130        }
20131      ],
20132      "(VK_KHR_shared_presentable_image)": [
20133        {
20134          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-01397",
20135          "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>"
20136        }
20137      ],
20138      "(VK_EXT_fragment_density_map)": [
20139        {
20140          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-02544",
20141          "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>"
20142        }
20143      ],
20144      "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
20145        {
20146          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-00193",
20147          "text": " If {imageparam} does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format&#8217;s texel block size"
20148        }
20149      ],
20150      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
20151        {
20152          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-01558",
20153          "text": " If {imageparam} does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format&#8217;s texel block size"
20154        },
20155        {
20156          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-01559",
20157          "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <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>"
20158        },
20159        {
20160          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-aspectMask-01560",
20161          "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>imageSubresource.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> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for image formats with three planes)"
20162        }
20163      ],
20164      "(VK_KHR_copy_commands2)": [
20165        {
20166          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-sType-sType",
20167          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR</code>"
20168        },
20169        {
20170          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pNext-pNext",
20171          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20172        },
20173        {
20174          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-parameter",
20175          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
20176        },
20177        {
20178          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-parameter",
20179          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
20180        },
20181        {
20182          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-parameter",
20183          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
20184        },
20185        {
20186          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-parameter",
20187          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferImageCopy2KHR\">VkBufferImageCopy2KHR</a> structures"
20188        },
20189        {
20190          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-regionCount-arraylength",
20191          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20192        },
20193        {
20194          "vuid": "VUID-VkCopyImageToBufferInfo2KHR-commonparent",
20195          "text": " Both of <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>"
20196        }
20197      ]
20198    },
20199    "VkBufferImageCopy2KHR": {
20200      "core": [
20201        {
20202          "vuid": "VUID-VkBufferImageCopy2KHR-bufferRowLength-00195",
20203          "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>"
20204        },
20205        {
20206          "vuid": "VUID-VkBufferImageCopy2KHR-bufferImageHeight-00196",
20207          "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>"
20208        },
20209        {
20210          "vuid": "VUID-VkBufferImageCopy2KHR-aspectMask-00212",
20211          "text": " The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set"
20212        }
20213      ],
20214      "(VK_KHR_copy_commands2)": [
20215        {
20216          "vuid": "VUID-VkBufferImageCopy2KHR-sType-sType",
20217          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR</code>"
20218        },
20219        {
20220          "vuid": "VUID-VkBufferImageCopy2KHR-pNext-pNext",
20221          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20222        },
20223        {
20224          "vuid": "VUID-VkBufferImageCopy2KHR-imageSubresource-parameter",
20225          "text": " <code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
20226        }
20227      ]
20228    },
20229    "vkCmdBlitImage": {
20230      "(VK_VERSION_1_1)": [
20231        {
20232          "vuid": "VUID-vkCmdBlitImage-commandBuffer-01834",
20233          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
20234        },
20235        {
20236          "vuid": "VUID-vkCmdBlitImage-commandBuffer-01835",
20237          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
20238        },
20239        {
20240          "vuid": "VUID-vkCmdBlitImage-commandBuffer-01836",
20241          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
20242        }
20243      ],
20244      "core": [
20245        {
20246          "vuid": "VUID-vkCmdBlitImage-pRegions-00215",
20247          "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>"
20248        },
20249        {
20250          "vuid": "VUID-vkCmdBlitImage-pRegions-00216",
20251          "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>"
20252        },
20253        {
20254          "vuid": "VUID-vkCmdBlitImage-pRegions-00217",
20255          "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"
20256        },
20257        {
20258          "vuid": "VUID-vkCmdBlitImage-srcImage-01999",
20259          "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>"
20260        },
20261        {
20262          "vuid": "VUID-vkCmdBlitImage-srcImage-00219",
20263          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
20264        },
20265        {
20266          "vuid": "VUID-vkCmdBlitImage-srcImage-00220",
20267          "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"
20268        },
20269        {
20270          "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00221",
20271          "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>"
20272        },
20273        {
20274          "vuid": "VUID-vkCmdBlitImage-dstImage-02000",
20275          "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>"
20276        },
20277        {
20278          "vuid": "VUID-vkCmdBlitImage-dstImage-00224",
20279          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
20280        },
20281        {
20282          "vuid": "VUID-vkCmdBlitImage-dstImage-00225",
20283          "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"
20284        },
20285        {
20286          "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00226",
20287          "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>"
20288        },
20289        {
20290          "vuid": "VUID-vkCmdBlitImage-srcImage-00229",
20291          "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>"
20292        },
20293        {
20294          "vuid": "VUID-vkCmdBlitImage-srcImage-00230",
20295          "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>"
20296        },
20297        {
20298          "vuid": "VUID-vkCmdBlitImage-srcImage-00231",
20299          "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"
20300        },
20301        {
20302          "vuid": "VUID-vkCmdBlitImage-srcImage-00232",
20303          "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>"
20304        },
20305        {
20306          "vuid": "VUID-vkCmdBlitImage-srcImage-00233",
20307          "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>"
20308        },
20309        {
20310          "vuid": "VUID-vkCmdBlitImage-dstImage-00234",
20311          "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>"
20312        },
20313        {
20314          "vuid": "VUID-vkCmdBlitImage-filter-02001",
20315          "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>"
20316        },
20317        {
20318          "vuid": "VUID-vkCmdBlitImage-srcSubresource-01705",
20319          "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"
20320        },
20321        {
20322          "vuid": "VUID-vkCmdBlitImage-dstSubresource-01706",
20323          "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"
20324        },
20325        {
20326          "vuid": "VUID-vkCmdBlitImage-srcSubresource-01707",
20327          "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"
20328        },
20329        {
20330          "vuid": "VUID-vkCmdBlitImage-dstSubresource-01708",
20331          "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"
20332        },
20333        {
20334          "vuid": "VUID-vkCmdBlitImage-srcImage-00240",
20335          "text": " If either <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> and <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> each be <code>0</code>, and <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> each be <code>1</code>."
20336        },
20337        {
20338          "vuid": "VUID-vkCmdBlitImage-aspectMask-00241",
20339          "text": " For each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>"
20340        },
20341        {
20342          "vuid": "VUID-vkCmdBlitImage-aspectMask-00242",
20343          "text": " For each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>"
20344        },
20345        {
20346          "vuid": "VUID-vkCmdBlitImage-srcOffset-00243",
20347          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>srcSubresource</code> of <code>srcImage</code>"
20348        },
20349        {
20350          "vuid": "VUID-vkCmdBlitImage-srcOffset-00244",
20351          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>srcSubresource</code> of <code>srcImage</code>"
20352        },
20353        {
20354          "vuid": "VUID-vkCmdBlitImage-srcImage-00245",
20355          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
20356        },
20357        {
20358          "vuid": "VUID-vkCmdBlitImage-srcOffset-00246",
20359          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>srcSubresource</code> of <code>srcImage</code>"
20360        },
20361        {
20362          "vuid": "VUID-vkCmdBlitImage-srcImage-00247",
20363          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <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>"
20364        },
20365        {
20366          "vuid": "VUID-vkCmdBlitImage-dstOffset-00248",
20367          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>dstSubresource</code> of <code>dstImage</code>"
20368        },
20369        {
20370          "vuid": "VUID-vkCmdBlitImage-dstOffset-00249",
20371          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>dstSubresource</code> of <code>dstImage</code>"
20372        },
20373        {
20374          "vuid": "VUID-vkCmdBlitImage-dstImage-00250",
20375          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
20376        },
20377        {
20378          "vuid": "VUID-vkCmdBlitImage-dstOffset-00251",
20379          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>dstSubresource</code> of <code>dstImage</code>"
20380        },
20381        {
20382          "vuid": "VUID-vkCmdBlitImage-dstImage-00252",
20383          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <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>"
20384        },
20385        {
20386          "vuid": "VUID-vkCmdBlitImage-commandBuffer-parameter",
20387          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
20388        },
20389        {
20390          "vuid": "VUID-vkCmdBlitImage-srcImage-parameter",
20391          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
20392        },
20393        {
20394          "vuid": "VUID-vkCmdBlitImage-srcImageLayout-parameter",
20395          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
20396        },
20397        {
20398          "vuid": "VUID-vkCmdBlitImage-dstImage-parameter",
20399          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
20400        },
20401        {
20402          "vuid": "VUID-vkCmdBlitImage-dstImageLayout-parameter",
20403          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
20404        },
20405        {
20406          "vuid": "VUID-vkCmdBlitImage-pRegions-parameter",
20407          "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"
20408        },
20409        {
20410          "vuid": "VUID-vkCmdBlitImage-filter-parameter",
20411          "text": " <code>filter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
20412        },
20413        {
20414          "vuid": "VUID-vkCmdBlitImage-commandBuffer-recording",
20415          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
20416        },
20417        {
20418          "vuid": "VUID-vkCmdBlitImage-commandBuffer-cmdpool",
20419          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
20420        },
20421        {
20422          "vuid": "VUID-vkCmdBlitImage-renderpass",
20423          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
20424        },
20425        {
20426          "vuid": "VUID-vkCmdBlitImage-regionCount-arraylength",
20427          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20428        },
20429        {
20430          "vuid": "VUID-vkCmdBlitImage-commonparent",
20431          "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>"
20432        }
20433      ],
20434      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
20435        {
20436          "vuid": "VUID-vkCmdBlitImage-srcImage-01561",
20437          "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>"
20438        },
20439        {
20440          "vuid": "VUID-vkCmdBlitImage-dstImage-01562",
20441          "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>"
20442        }
20443      ],
20444      "!(VK_KHR_shared_presentable_image)": [
20445        {
20446          "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00222",
20447          "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>"
20448        },
20449        {
20450          "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00227",
20451          "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>"
20452        }
20453      ],
20454      "(VK_KHR_shared_presentable_image)": [
20455        {
20456          "vuid": "VUID-vkCmdBlitImage-srcImageLayout-01398",
20457          "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>"
20458        },
20459        {
20460          "vuid": "VUID-vkCmdBlitImage-dstImageLayout-01399",
20461          "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>"
20462        }
20463      ],
20464      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
20465        {
20466          "vuid": "VUID-vkCmdBlitImage-filter-02002",
20467          "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>"
20468        },
20469        {
20470          "vuid": "VUID-vkCmdBlitImage-filter-00237",
20471          "text": " If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code>, <code>srcImage</code> <strong class=\"purple\">must</strong> be of type <code>VK_IMAGE_TYPE_2D</code>"
20472        }
20473      ],
20474      "(VK_EXT_fragment_density_map)": [
20475        {
20476          "vuid": "VUID-vkCmdBlitImage-dstImage-02545",
20477          "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>"
20478        }
20479      ]
20480    },
20481    "VkImageBlit": {
20482      "core": [
20483        {
20484          "vuid": "VUID-VkImageBlit-aspectMask-00238",
20485          "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
20486        },
20487        {
20488          "vuid": "VUID-VkImageBlit-layerCount-00239",
20489          "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
20490        },
20491        {
20492          "vuid": "VUID-VkImageBlit-srcSubresource-parameter",
20493          "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
20494        },
20495        {
20496          "vuid": "VUID-VkImageBlit-dstSubresource-parameter",
20497          "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
20498        }
20499      ]
20500    },
20501    "vkCmdBlitImage2KHR": {
20502      "(VK_VERSION_1_1)": [
20503        {
20504          "vuid": "VUID-vkCmdBlitImage2KHR-commandBuffer-01834",
20505          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
20506        },
20507        {
20508          "vuid": "VUID-vkCmdBlitImage2KHR-commandBuffer-01835",
20509          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
20510        },
20511        {
20512          "vuid": "VUID-vkCmdBlitImage2KHR-commandBuffer-01836",
20513          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
20514        }
20515      ],
20516      "(VK_KHR_copy_commands2)": [
20517        {
20518          "vuid": "VUID-vkCmdBlitImage2KHR-commandBuffer-parameter",
20519          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
20520        },
20521        {
20522          "vuid": "VUID-vkCmdBlitImage2KHR-pBlitImageInfo-parameter",
20523          "text": " <code>pBlitImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBlitImageInfo2KHR\">VkBlitImageInfo2KHR</a> structure"
20524        },
20525        {
20526          "vuid": "VUID-vkCmdBlitImage2KHR-commandBuffer-recording",
20527          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
20528        },
20529        {
20530          "vuid": "VUID-vkCmdBlitImage2KHR-commandBuffer-cmdpool",
20531          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
20532        },
20533        {
20534          "vuid": "VUID-vkCmdBlitImage2KHR-renderpass",
20535          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
20536        }
20537      ]
20538    },
20539    "VkBlitImageInfo2KHR": {
20540      "core": [
20541        {
20542          "vuid": "VUID-VkBlitImageInfo2KHR-pRegions-00215",
20543          "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>"
20544        },
20545        {
20546          "vuid": "VUID-VkBlitImageInfo2KHR-pRegions-00216",
20547          "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>"
20548        },
20549        {
20550          "vuid": "VUID-VkBlitImageInfo2KHR-pRegions-00217",
20551          "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"
20552        },
20553        {
20554          "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-01999",
20555          "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>"
20556        },
20557        {
20558          "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00219",
20559          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
20560        },
20561        {
20562          "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00220",
20563          "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"
20564        },
20565        {
20566          "vuid": "VUID-VkBlitImageInfo2KHR-srcImageLayout-00221",
20567          "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>"
20568        },
20569        {
20570          "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-02000",
20571          "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>"
20572        },
20573        {
20574          "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-00224",
20575          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
20576        },
20577        {
20578          "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-00225",
20579          "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"
20580        },
20581        {
20582          "vuid": "VUID-VkBlitImageInfo2KHR-dstImageLayout-00226",
20583          "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>"
20584        },
20585        {
20586          "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00229",
20587          "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>"
20588        },
20589        {
20590          "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00230",
20591          "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>"
20592        },
20593        {
20594          "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00231",
20595          "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"
20596        },
20597        {
20598          "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00232",
20599          "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>"
20600        },
20601        {
20602          "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00233",
20603          "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>"
20604        },
20605        {
20606          "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-00234",
20607          "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>"
20608        },
20609        {
20610          "vuid": "VUID-VkBlitImageInfo2KHR-filter-02001",
20611          "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>"
20612        },
20613        {
20614          "vuid": "VUID-VkBlitImageInfo2KHR-srcSubresource-01705",
20615          "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"
20616        },
20617        {
20618          "vuid": "VUID-VkBlitImageInfo2KHR-dstSubresource-01706",
20619          "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"
20620        },
20621        {
20622          "vuid": "VUID-VkBlitImageInfo2KHR-srcSubresource-01707",
20623          "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"
20624        },
20625        {
20626          "vuid": "VUID-VkBlitImageInfo2KHR-dstSubresource-01708",
20627          "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"
20628        },
20629        {
20630          "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00240",
20631          "text": " If either <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> and <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> each be <code>0</code>, and <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> each be <code>1</code>."
20632        },
20633        {
20634          "vuid": "VUID-VkBlitImageInfo2KHR-aspectMask-00241",
20635          "text": " For each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>"
20636        },
20637        {
20638          "vuid": "VUID-VkBlitImageInfo2KHR-aspectMask-00242",
20639          "text": " For each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>"
20640        },
20641        {
20642          "vuid": "VUID-VkBlitImageInfo2KHR-srcOffset-00243",
20643          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>srcSubresource</code> of <code>srcImage</code>"
20644        },
20645        {
20646          "vuid": "VUID-VkBlitImageInfo2KHR-srcOffset-00244",
20647          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>srcSubresource</code> of <code>srcImage</code>"
20648        },
20649        {
20650          "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00245",
20651          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
20652        },
20653        {
20654          "vuid": "VUID-VkBlitImageInfo2KHR-srcOffset-00246",
20655          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>srcSubresource</code> of <code>srcImage</code>"
20656        },
20657        {
20658          "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00247",
20659          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <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>"
20660        },
20661        {
20662          "vuid": "VUID-VkBlitImageInfo2KHR-dstOffset-00248",
20663          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>dstSubresource</code> of <code>dstImage</code>"
20664        },
20665        {
20666          "vuid": "VUID-VkBlitImageInfo2KHR-dstOffset-00249",
20667          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>dstSubresource</code> of <code>dstImage</code>"
20668        },
20669        {
20670          "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-00250",
20671          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
20672        },
20673        {
20674          "vuid": "VUID-VkBlitImageInfo2KHR-dstOffset-00251",
20675          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>dstSubresource</code> of <code>dstImage</code>"
20676        },
20677        {
20678          "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-00252",
20679          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <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>"
20680        }
20681      ],
20682      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
20683        {
20684          "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-01561",
20685          "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>"
20686        },
20687        {
20688          "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-01562",
20689          "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>"
20690        }
20691      ],
20692      "!(VK_KHR_shared_presentable_image)": [
20693        {
20694          "vuid": "VUID-VkBlitImageInfo2KHR-srcImageLayout-00222",
20695          "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>"
20696        },
20697        {
20698          "vuid": "VUID-VkBlitImageInfo2KHR-dstImageLayout-00227",
20699          "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>"
20700        }
20701      ],
20702      "(VK_KHR_shared_presentable_image)": [
20703        {
20704          "vuid": "VUID-VkBlitImageInfo2KHR-srcImageLayout-01398",
20705          "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>"
20706        },
20707        {
20708          "vuid": "VUID-VkBlitImageInfo2KHR-dstImageLayout-01399",
20709          "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>"
20710        }
20711      ],
20712      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
20713        {
20714          "vuid": "VUID-VkBlitImageInfo2KHR-filter-02002",
20715          "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>"
20716        },
20717        {
20718          "vuid": "VUID-VkBlitImageInfo2KHR-filter-00237",
20719          "text": " If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code>, <code>srcImage</code> <strong class=\"purple\">must</strong> be of type <code>VK_IMAGE_TYPE_2D</code>"
20720        }
20721      ],
20722      "(VK_EXT_fragment_density_map)": [
20723        {
20724          "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-02545",
20725          "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>"
20726        }
20727      ],
20728      "(VK_KHR_copy_commands2)": [
20729        {
20730          "vuid": "VUID-VkBlitImageInfo2KHR-sType-sType",
20731          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR</code>"
20732        },
20733        {
20734          "vuid": "VUID-VkBlitImageInfo2KHR-pNext-pNext",
20735          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20736        },
20737        {
20738          "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-parameter",
20739          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
20740        },
20741        {
20742          "vuid": "VUID-VkBlitImageInfo2KHR-srcImageLayout-parameter",
20743          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
20744        },
20745        {
20746          "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-parameter",
20747          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
20748        },
20749        {
20750          "vuid": "VUID-VkBlitImageInfo2KHR-dstImageLayout-parameter",
20751          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
20752        },
20753        {
20754          "vuid": "VUID-VkBlitImageInfo2KHR-pRegions-parameter",
20755          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageBlit2KHR\">VkImageBlit2KHR</a> structures"
20756        },
20757        {
20758          "vuid": "VUID-VkBlitImageInfo2KHR-filter-parameter",
20759          "text": " <code>filter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
20760        },
20761        {
20762          "vuid": "VUID-VkBlitImageInfo2KHR-regionCount-arraylength",
20763          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20764        },
20765        {
20766          "vuid": "VUID-VkBlitImageInfo2KHR-commonparent",
20767          "text": " Both of <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>"
20768        }
20769      ]
20770    },
20771    "VkImageBlit2KHR": {
20772      "core": [
20773        {
20774          "vuid": "VUID-VkImageBlit2KHR-aspectMask-00238",
20775          "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
20776        },
20777        {
20778          "vuid": "VUID-VkImageBlit2KHR-layerCount-00239",
20779          "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
20780        }
20781      ],
20782      "(VK_KHR_copy_commands2)": [
20783        {
20784          "vuid": "VUID-VkImageBlit2KHR-sType-sType",
20785          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR</code>"
20786        },
20787        {
20788          "vuid": "VUID-VkImageBlit2KHR-pNext-pNext",
20789          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20790        },
20791        {
20792          "vuid": "VUID-VkImageBlit2KHR-srcSubresource-parameter",
20793          "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
20794        },
20795        {
20796          "vuid": "VUID-VkImageBlit2KHR-dstSubresource-parameter",
20797          "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
20798        }
20799      ]
20800    },
20801    "vkCmdResolveImage": {
20802      "(VK_VERSION_1_1)": [
20803        {
20804          "vuid": "VUID-vkCmdResolveImage-commandBuffer-01837",
20805          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
20806        },
20807        {
20808          "vuid": "VUID-vkCmdResolveImage-commandBuffer-01838",
20809          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
20810        },
20811        {
20812          "vuid": "VUID-vkCmdResolveImage-commandBuffer-01839",
20813          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
20814        }
20815      ],
20816      "core": [
20817        {
20818          "vuid": "VUID-vkCmdResolveImage-pRegions-00255",
20819          "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"
20820        },
20821        {
20822          "vuid": "VUID-vkCmdResolveImage-srcImage-00256",
20823          "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"
20824        },
20825        {
20826          "vuid": "VUID-vkCmdResolveImage-srcImage-00257",
20827          "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>"
20828        },
20829        {
20830          "vuid": "VUID-vkCmdResolveImage-dstImage-00258",
20831          "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"
20832        },
20833        {
20834          "vuid": "VUID-vkCmdResolveImage-dstImage-00259",
20835          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
20836        },
20837        {
20838          "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00260",
20839          "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>"
20840        },
20841        {
20842          "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00262",
20843          "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>"
20844        },
20845        {
20846          "vuid": "VUID-vkCmdResolveImage-dstImage-02003",
20847          "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>"
20848        },
20849        {
20850          "vuid": "VUID-vkCmdResolveImage-srcImage-01386",
20851          "text": " <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with the same image format"
20852        },
20853        {
20854          "vuid": "VUID-vkCmdResolveImage-srcSubresource-01709",
20855          "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"
20856        },
20857        {
20858          "vuid": "VUID-vkCmdResolveImage-dstSubresource-01710",
20859          "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"
20860        },
20861        {
20862          "vuid": "VUID-vkCmdResolveImage-srcSubresource-01711",
20863          "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"
20864        },
20865        {
20866          "vuid": "VUID-vkCmdResolveImage-dstSubresource-01712",
20867          "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"
20868        },
20869        {
20870          "vuid": "VUID-vkCmdResolveImage-srcImage-04446",
20871          "text": " If either <code>srcImage</code> or <code>dstImage</code> are of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
20872        },
20873        {
20874          "vuid": "VUID-vkCmdResolveImage-srcImage-04447",
20875          "text": " If either <code>srcImage</code> or <code>dstImage</code> are of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
20876        },
20877        {
20878          "vuid": "VUID-vkCmdResolveImage-srcOffset-00269",
20879          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>srcSubresource</code> of <code>srcImage</code>"
20880        },
20881        {
20882          "vuid": "VUID-vkCmdResolveImage-srcOffset-00270",
20883          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>srcSubresource</code> of <code>srcImage</code>"
20884        },
20885        {
20886          "vuid": "VUID-vkCmdResolveImage-srcImage-00271",
20887          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
20888        },
20889        {
20890          "vuid": "VUID-vkCmdResolveImage-srcOffset-00272",
20891          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>srcSubresource</code> of <code>srcImage</code>"
20892        },
20893        {
20894          "vuid": "VUID-vkCmdResolveImage-srcImage-00273",
20895          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <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>"
20896        },
20897        {
20898          "vuid": "VUID-vkCmdResolveImage-dstOffset-00274",
20899          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>dstSubresource</code> of <code>dstImage</code>"
20900        },
20901        {
20902          "vuid": "VUID-vkCmdResolveImage-dstOffset-00275",
20903          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>dstSubresource</code> of <code>dstImage</code>"
20904        },
20905        {
20906          "vuid": "VUID-vkCmdResolveImage-dstImage-00276",
20907          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
20908        },
20909        {
20910          "vuid": "VUID-vkCmdResolveImage-dstOffset-00277",
20911          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>dstSubresource</code> of <code>dstImage</code>"
20912        },
20913        {
20914          "vuid": "VUID-vkCmdResolveImage-dstImage-00278",
20915          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <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>"
20916        },
20917        {
20918          "vuid": "VUID-vkCmdResolveImage-commandBuffer-parameter",
20919          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
20920        },
20921        {
20922          "vuid": "VUID-vkCmdResolveImage-srcImage-parameter",
20923          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
20924        },
20925        {
20926          "vuid": "VUID-vkCmdResolveImage-srcImageLayout-parameter",
20927          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
20928        },
20929        {
20930          "vuid": "VUID-vkCmdResolveImage-dstImage-parameter",
20931          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
20932        },
20933        {
20934          "vuid": "VUID-vkCmdResolveImage-dstImageLayout-parameter",
20935          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
20936        },
20937        {
20938          "vuid": "VUID-vkCmdResolveImage-pRegions-parameter",
20939          "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"
20940        },
20941        {
20942          "vuid": "VUID-vkCmdResolveImage-commandBuffer-recording",
20943          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
20944        },
20945        {
20946          "vuid": "VUID-vkCmdResolveImage-commandBuffer-cmdpool",
20947          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
20948        },
20949        {
20950          "vuid": "VUID-vkCmdResolveImage-renderpass",
20951          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
20952        },
20953        {
20954          "vuid": "VUID-vkCmdResolveImage-regionCount-arraylength",
20955          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20956        },
20957        {
20958          "vuid": "VUID-vkCmdResolveImage-commonparent",
20959          "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>"
20960        }
20961      ],
20962      "!(VK_KHR_shared_presentable_image)": [
20963        {
20964          "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00261",
20965          "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>"
20966        },
20967        {
20968          "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00263",
20969          "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>"
20970        }
20971      ],
20972      "(VK_KHR_shared_presentable_image)": [
20973        {
20974          "vuid": "VUID-vkCmdResolveImage-srcImageLayout-01400",
20975          "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>"
20976        },
20977        {
20978          "vuid": "VUID-vkCmdResolveImage-dstImageLayout-01401",
20979          "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>"
20980        }
20981      ],
20982      "(VK_EXT_fragment_density_map)": [
20983        {
20984          "vuid": "VUID-vkCmdResolveImage-dstImage-02546",
20985          "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>"
20986        }
20987      ]
20988    },
20989    "VkImageResolve": {
20990      "core": [
20991        {
20992          "vuid": "VUID-VkImageResolve-aspectMask-00266",
20993          "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>"
20994        },
20995        {
20996          "vuid": "VUID-VkImageResolve-layerCount-00267",
20997          "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
20998        },
20999        {
21000          "vuid": "VUID-VkImageResolve-srcSubresource-parameter",
21001          "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
21002        },
21003        {
21004          "vuid": "VUID-VkImageResolve-dstSubresource-parameter",
21005          "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
21006        }
21007      ]
21008    },
21009    "vkCmdWriteBufferMarkerAMD": {
21010      "core": [
21011        {
21012          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04074",
21013          "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"
21014        },
21015        {
21016          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04075",
21017          "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>"
21018        },
21019        {
21020          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04076",
21021          "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>"
21022        },
21023        {
21024          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798",
21025          "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>"
21026        },
21027        {
21028          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01799",
21029          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
21030        },
21031        {
21032          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01800",
21033          "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"
21034        },
21035        {
21036          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01801",
21037          "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
21038        }
21039      ],
21040      "(VK_EXT_conditional_rendering)": [
21041        {
21042          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04077",
21043          "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>"
21044        }
21045      ],
21046      "(VK_EXT_fragment_density_map)": [
21047        {
21048          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04078",
21049          "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>"
21050        }
21051      ],
21052      "(VK_EXT_transform_feedback)": [
21053        {
21054          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04079",
21055          "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>"
21056        }
21057      ],
21058      "(VK_NV_mesh_shader)": [
21059        {
21060          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04080",
21061          "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>"
21062        }
21063      ],
21064      "(VK_NV_shading_rate_image)": [
21065        {
21066          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04081",
21067          "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>"
21068        }
21069      ],
21070      "(VK_AMD_buffer_marker)": [
21071        {
21072          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter",
21073          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21074        },
21075        {
21076          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-parameter",
21077          "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value"
21078        },
21079        {
21080          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-parameter",
21081          "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
21082        },
21083        {
21084          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-recording",
21085          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21086        },
21087        {
21088          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-cmdpool",
21089          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
21090        },
21091        {
21092          "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commonparent",
21093          "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>"
21094        }
21095      ]
21096    },
21097    "vkCmdResolveImage2KHR": {
21098      "(VK_VERSION_1_1)": [
21099        {
21100          "vuid": "VUID-vkCmdResolveImage2KHR-commandBuffer-01837",
21101          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
21102        },
21103        {
21104          "vuid": "VUID-vkCmdResolveImage2KHR-commandBuffer-01838",
21105          "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
21106        },
21107        {
21108          "vuid": "VUID-vkCmdResolveImage2KHR-commandBuffer-01839",
21109          "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
21110        }
21111      ],
21112      "(VK_KHR_copy_commands2)": [
21113        {
21114          "vuid": "VUID-vkCmdResolveImage2KHR-commandBuffer-parameter",
21115          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21116        },
21117        {
21118          "vuid": "VUID-vkCmdResolveImage2KHR-pResolveImageInfo-parameter",
21119          "text": " <code>pResolveImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkResolveImageInfo2KHR\">VkResolveImageInfo2KHR</a> structure"
21120        },
21121        {
21122          "vuid": "VUID-vkCmdResolveImage2KHR-commandBuffer-recording",
21123          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21124        },
21125        {
21126          "vuid": "VUID-vkCmdResolveImage2KHR-commandBuffer-cmdpool",
21127          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21128        },
21129        {
21130          "vuid": "VUID-vkCmdResolveImage2KHR-renderpass",
21131          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
21132        }
21133      ]
21134    },
21135    "VkResolveImageInfo2KHR": {
21136      "core": [
21137        {
21138          "vuid": "VUID-VkResolveImageInfo2KHR-pRegions-00255",
21139          "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"
21140        },
21141        {
21142          "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-00256",
21143          "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"
21144        },
21145        {
21146          "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-00257",
21147          "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>"
21148        },
21149        {
21150          "vuid": "VUID-VkResolveImageInfo2KHR-dstImage-00258",
21151          "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"
21152        },
21153        {
21154          "vuid": "VUID-VkResolveImageInfo2KHR-dstImage-00259",
21155          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
21156        },
21157        {
21158          "vuid": "VUID-VkResolveImageInfo2KHR-srcImageLayout-00260",
21159          "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>"
21160        },
21161        {
21162          "vuid": "VUID-VkResolveImageInfo2KHR-dstImageLayout-00262",
21163          "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>"
21164        },
21165        {
21166          "vuid": "VUID-VkResolveImageInfo2KHR-dstImage-02003",
21167          "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>"
21168        },
21169        {
21170          "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-01386",
21171          "text": " <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with the same image format"
21172        },
21173        {
21174          "vuid": "VUID-VkResolveImageInfo2KHR-srcSubresource-01709",
21175          "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"
21176        },
21177        {
21178          "vuid": "VUID-VkResolveImageInfo2KHR-dstSubresource-01710",
21179          "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"
21180        },
21181        {
21182          "vuid": "VUID-VkResolveImageInfo2KHR-srcSubresource-01711",
21183          "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"
21184        },
21185        {
21186          "vuid": "VUID-VkResolveImageInfo2KHR-dstSubresource-01712",
21187          "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"
21188        },
21189        {
21190          "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-04446",
21191          "text": " If either <code>srcImage</code> or <code>dstImage</code> are of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
21192        },
21193        {
21194          "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-04447",
21195          "text": " If either <code>srcImage</code> or <code>dstImage</code> are of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
21196        },
21197        {
21198          "vuid": "VUID-VkResolveImageInfo2KHR-srcOffset-00269",
21199          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>srcSubresource</code> of <code>srcImage</code>"
21200        },
21201        {
21202          "vuid": "VUID-VkResolveImageInfo2KHR-srcOffset-00270",
21203          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>srcSubresource</code> of <code>srcImage</code>"
21204        },
21205        {
21206          "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-00271",
21207          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
21208        },
21209        {
21210          "vuid": "VUID-VkResolveImageInfo2KHR-srcOffset-00272",
21211          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>srcSubresource</code> of <code>srcImage</code>"
21212        },
21213        {
21214          "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-00273",
21215          "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <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>"
21216        },
21217        {
21218          "vuid": "VUID-VkResolveImageInfo2KHR-dstOffset-00274",
21219          "text": " For each element of <code>pRegions</code>, <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 width of the specified <code>dstSubresource</code> of <code>dstImage</code>"
21220        },
21221        {
21222          "vuid": "VUID-VkResolveImageInfo2KHR-dstOffset-00275",
21223          "text": " For each element of <code>pRegions</code>, <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 height of the specified <code>dstSubresource</code> of <code>dstImage</code>"
21224        },
21225        {
21226          "vuid": "VUID-VkResolveImageInfo2KHR-dstImage-00276",
21227          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <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>"
21228        },
21229        {
21230          "vuid": "VUID-VkResolveImageInfo2KHR-dstOffset-00277",
21231          "text": " For each element of <code>pRegions</code>, <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 depth of the specified <code>dstSubresource</code> of <code>dstImage</code>"
21232        },
21233        {
21234          "vuid": "VUID-VkResolveImageInfo2KHR-dstImage-00278",
21235          "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <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>"
21236        }
21237      ],
21238      "!(VK_KHR_shared_presentable_image)": [
21239        {
21240          "vuid": "VUID-VkResolveImageInfo2KHR-srcImageLayout-00261",
21241          "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>"
21242        },
21243        {
21244          "vuid": "VUID-VkResolveImageInfo2KHR-dstImageLayout-00263",
21245          "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>"
21246        }
21247      ],
21248      "(VK_KHR_shared_presentable_image)": [
21249        {
21250          "vuid": "VUID-VkResolveImageInfo2KHR-srcImageLayout-01400",
21251          "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>"
21252        },
21253        {
21254          "vuid": "VUID-VkResolveImageInfo2KHR-dstImageLayout-01401",
21255          "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>"
21256        }
21257      ],
21258      "(VK_EXT_fragment_density_map)": [
21259        {
21260          "vuid": "VUID-VkResolveImageInfo2KHR-dstImage-02546",
21261          "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>"
21262        }
21263      ],
21264      "(VK_KHR_copy_commands2)": [
21265        {
21266          "vuid": "VUID-VkResolveImageInfo2KHR-sType-sType",
21267          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR</code>"
21268        },
21269        {
21270          "vuid": "VUID-VkResolveImageInfo2KHR-pNext-pNext",
21271          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21272        },
21273        {
21274          "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-parameter",
21275          "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
21276        },
21277        {
21278          "vuid": "VUID-VkResolveImageInfo2KHR-srcImageLayout-parameter",
21279          "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
21280        },
21281        {
21282          "vuid": "VUID-VkResolveImageInfo2KHR-dstImage-parameter",
21283          "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
21284        },
21285        {
21286          "vuid": "VUID-VkResolveImageInfo2KHR-dstImageLayout-parameter",
21287          "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
21288        },
21289        {
21290          "vuid": "VUID-VkResolveImageInfo2KHR-pRegions-parameter",
21291          "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageResolve2KHR\">VkImageResolve2KHR</a> structures"
21292        },
21293        {
21294          "vuid": "VUID-VkResolveImageInfo2KHR-regionCount-arraylength",
21295          "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21296        },
21297        {
21298          "vuid": "VUID-VkResolveImageInfo2KHR-commonparent",
21299          "text": " Both of <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>"
21300        }
21301      ]
21302    },
21303    "VkImageResolve2KHR": {
21304      "core": [
21305        {
21306          "vuid": "VUID-VkImageResolve2KHR-aspectMask-00266",
21307          "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>"
21308        },
21309        {
21310          "vuid": "VUID-VkImageResolve2KHR-layerCount-00267",
21311          "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
21312        }
21313      ],
21314      "(VK_KHR_copy_commands2)": [
21315        {
21316          "vuid": "VUID-VkImageResolve2KHR-sType-sType",
21317          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR</code>"
21318        },
21319        {
21320          "vuid": "VUID-VkImageResolve2KHR-pNext-pNext",
21321          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21322        },
21323        {
21324          "vuid": "VUID-VkImageResolve2KHR-srcSubresource-parameter",
21325          "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
21326        },
21327        {
21328          "vuid": "VUID-VkImageResolve2KHR-dstSubresource-parameter",
21329          "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure"
21330        }
21331      ]
21332    },
21333    "VkPipelineInputAssemblyStateCreateInfo": {
21334      "core": [
21335        {
21336          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00428",
21337          "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>"
21338        },
21339        {
21340          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429",
21341          "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>"
21342        },
21343        {
21344          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430",
21345          "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>"
21346        },
21347        {
21348          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType",
21349          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO</code>"
21350        },
21351        {
21352          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext",
21353          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21354        },
21355        {
21356          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask",
21357          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
21358        },
21359        {
21360          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter",
21361          "text": " <code>topology</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrimitiveTopology\">VkPrimitiveTopology</a> value"
21362        }
21363      ],
21364      "(VK_KHR_portability_subset)": [
21365        {
21366          "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-triangleFans-04452",
21367          "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>triangleFans</code> is <code>VK_FALSE</code>, <code>topology</code> <strong class=\"purple\">must</strong> not be <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN</code>."
21368        }
21369      ]
21370    },
21371    "vkCmdSetPrimitiveTopologyEXT": {
21372      "(VK_EXT_extended_dynamic_state)": [
21373        {
21374          "vuid": "VUID-vkCmdSetPrimitiveTopologyEXT-None-03347",
21375          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
21376        },
21377        {
21378          "vuid": "VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-parameter",
21379          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21380        },
21381        {
21382          "vuid": "VUID-vkCmdSetPrimitiveTopologyEXT-primitiveTopology-parameter",
21383          "text": " <code>primitiveTopology</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrimitiveTopology\">VkPrimitiveTopology</a> value"
21384        },
21385        {
21386          "vuid": "VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-recording",
21387          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21388        },
21389        {
21390          "vuid": "VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-cmdpool",
21391          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21392        }
21393      ]
21394    },
21395    "vkCmdBindIndexBuffer": {
21396      "core": [
21397        {
21398          "vuid": "VUID-vkCmdBindIndexBuffer-offset-00431",
21399          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
21400        },
21401        {
21402          "vuid": "VUID-vkCmdBindIndexBuffer-offset-00432",
21403          "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>"
21404        },
21405        {
21406          "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00433",
21407          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDEX_BUFFER_BIT</code> flag"
21408        },
21409        {
21410          "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00434",
21411          "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"
21412        },
21413        {
21414          "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-parameter",
21415          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21416        },
21417        {
21418          "vuid": "VUID-vkCmdBindIndexBuffer-buffer-parameter",
21419          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
21420        },
21421        {
21422          "vuid": "VUID-vkCmdBindIndexBuffer-indexType-parameter",
21423          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
21424        },
21425        {
21426          "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-recording",
21427          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21428        },
21429        {
21430          "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-cmdpool",
21431          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21432        },
21433        {
21434          "vuid": "VUID-vkCmdBindIndexBuffer-commonparent",
21435          "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>"
21436        }
21437      ],
21438      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
21439        {
21440          "vuid": "VUID-vkCmdBindIndexBuffer-indexType-02507",
21441          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> not be <code>VK_INDEX_TYPE_NONE_KHR</code>"
21442        }
21443      ],
21444      "(VK_EXT_index_type_uint8)": [
21445        {
21446          "vuid": "VUID-vkCmdBindIndexBuffer-indexType-02765",
21447          "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"
21448        }
21449      ]
21450    },
21451    "vkCmdDraw": {
21452      "core": [
21453        {
21454          "vuid": "VUID-vkCmdDraw-magFilter-04553",
21455          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
21456        },
21457        {
21458          "vuid": "VUID-vkCmdDraw-None-02691",
21459          "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>"
21460        },
21461        {
21462          "vuid": "VUID-vkCmdDraw-None-02697",
21463          "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>"
21464        },
21465        {
21466          "vuid": "VUID-vkCmdDraw-None-02698",
21467          "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>"
21468        },
21469        {
21470          "vuid": "VUID-vkCmdDraw-None-02699",
21471          "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"
21472        },
21473        {
21474          "vuid": "VUID-vkCmdDraw-None-02700",
21475          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
21476        },
21477        {
21478          "vuid": "VUID-vkCmdDraw-commandBuffer-02701",
21479          "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"
21480        },
21481        {
21482          "vuid": "VUID-vkCmdDraw-None-02859",
21483          "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"
21484        },
21485        {
21486          "vuid": "VUID-vkCmdDraw-None-02702",
21487          "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"
21488        },
21489        {
21490          "vuid": "VUID-vkCmdDraw-None-02703",
21491          "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"
21492        },
21493        {
21494          "vuid": "VUID-vkCmdDraw-None-02704",
21495          "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"
21496        },
21497        {
21498          "vuid": "VUID-vkCmdDraw-None-02705",
21499          "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"
21500        },
21501        {
21502          "vuid": "VUID-vkCmdDraw-None-02706",
21503          "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"
21504        },
21505        {
21506          "vuid": "VUID-vkCmdDraw-None-04115",
21507          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
21508        },
21509        {
21510          "vuid": "VUID-vkCmdDraw-OpImageWrite-04469",
21511          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
21512        },
21513        {
21514          "vuid": "VUID-vkCmdDraw-renderPass-02684",
21515          "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>"
21516        },
21517        {
21518          "vuid": "VUID-vkCmdDraw-subpass-02685",
21519          "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>"
21520        },
21521        {
21522          "vuid": "VUID-vkCmdDraw-None-02686",
21523          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
21524        },
21525        {
21526          "vuid": "VUID-vkCmdDraw-None-02687",
21527          "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"
21528        },
21529        {
21530          "vuid": "VUID-vkCmdDraw-None-04007",
21531          "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"
21532        },
21533        {
21534          "vuid": "VUID-vkCmdDraw-None-04008",
21535          "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>"
21536        },
21537        {
21538          "vuid": "VUID-vkCmdDraw-None-02721",
21539          "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>"
21540        },
21541        {
21542          "vuid": "VUID-vkCmdDraw-commandBuffer-parameter",
21543          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21544        },
21545        {
21546          "vuid": "VUID-vkCmdDraw-commandBuffer-recording",
21547          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21548        },
21549        {
21550          "vuid": "VUID-vkCmdDraw-commandBuffer-cmdpool",
21551          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21552        },
21553        {
21554          "vuid": "VUID-vkCmdDraw-renderpass",
21555          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
21556        }
21557      ],
21558      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
21559        {
21560          "vuid": "VUID-vkCmdDraw-None-02692",
21561          "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>"
21562        }
21563      ],
21564      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
21565        {
21566          "vuid": "VUID-vkCmdDraw-None-02693",
21567          "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>"
21568        }
21569      ],
21570      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
21571        {
21572          "vuid": "VUID-vkCmdDraw-filterCubic-02694",
21573          "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>"
21574        },
21575        {
21576          "vuid": "VUID-vkCmdDraw-filterCubicMinmax-02695",
21577          "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>"
21578        }
21579      ],
21580      "(VK_NV_corner_sampled_image)": [
21581        {
21582          "vuid": "VUID-vkCmdDraw-flags-02696",
21583          "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>"
21584        }
21585      ],
21586      "(VK_VERSION_1_1)": [
21587        {
21588          "vuid": "VUID-vkCmdDraw-commandBuffer-02707",
21589          "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"
21590        },
21591        {
21592          "vuid": "VUID-vkCmdDraw-commandBuffer-02712",
21593          "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"
21594        },
21595        {
21596          "vuid": "VUID-vkCmdDraw-commandBuffer-02713",
21597          "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"
21598        }
21599      ],
21600      "(VK_EXT_shader_image_atomic_int64)": [
21601        {
21602          "vuid": "VUID-vkCmdDraw-SampledType-04470",
21603          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
21604        },
21605        {
21606          "vuid": "VUID-vkCmdDraw-SampledType-04471",
21607          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
21608        },
21609        {
21610          "vuid": "VUID-vkCmdDraw-SampledType-04472",
21611          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
21612        },
21613        {
21614          "vuid": "VUID-vkCmdDraw-SampledType-04473",
21615          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
21616        },
21617        {
21618          "vuid": "VUID-vkCmdDraw-sparseImageInt64Atomics-04474",
21619          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
21620        },
21621        {
21622          "vuid": "VUID-vkCmdDraw-sparseImageInt64Atomics-04475",
21623          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
21624        }
21625      ],
21626      "(VK_VERSION_1_1,VK_KHR_multiview)": [
21627        {
21628          "vuid": "VUID-vkCmdDraw-maxMultiviewInstanceIndex-02688",
21629          "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>"
21630        }
21631      ],
21632      "(VK_EXT_sample_locations)": [
21633        {
21634          "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-02689",
21635          "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"
21636        }
21637      ],
21638      "(VK_EXT_extended_dynamic_state)": [
21639        {
21640          "vuid": "VUID-vkCmdDraw-viewportCount-03417",
21641          "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 <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"
21642        },
21643        {
21644          "vuid": "VUID-vkCmdDraw-scissorCount-03418",
21645          "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 <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"
21646        },
21647        {
21648          "vuid": "VUID-vkCmdDraw-viewportCount-03419",
21649          "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>"
21650        },
21651        {
21652          "vuid": "VUID-vkCmdDraw-primitiveTopology-03420",
21653          "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"
21654        }
21655      ],
21656      "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
21657        {
21658          "vuid": "VUID-vkCmdDraw-viewportCount-04137",
21659          "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_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
21660        },
21661        {
21662          "vuid": "VUID-vkCmdDraw-viewportCount-04138",
21663          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
21664        }
21665      ],
21666      "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
21667        {
21668          "vuid": "VUID-vkCmdDraw-viewportCount-04139",
21669          "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_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
21670        },
21671        {
21672          "vuid": "VUID-vkCmdDraw-viewportCount-04140",
21673          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
21674        }
21675      ],
21676      "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
21677        {
21678          "vuid": "VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04141",
21679          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
21680        }
21681      ],
21682      "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
21683        {
21684          "vuid": "VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04142",
21685          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
21686        }
21687      ],
21688      "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [
21689        {
21690          "vuid": "VUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-04552",
21691          "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, 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> be <code>1</code>"
21692        }
21693      ]
21694    },
21695    "vkCmdDrawIndexed": {
21696      "core": [
21697        {
21698          "vuid": "VUID-vkCmdDrawIndexed-magFilter-04553",
21699          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
21700        },
21701        {
21702          "vuid": "VUID-vkCmdDrawIndexed-None-02691",
21703          "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>"
21704        },
21705        {
21706          "vuid": "VUID-vkCmdDrawIndexed-None-02697",
21707          "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>"
21708        },
21709        {
21710          "vuid": "VUID-vkCmdDrawIndexed-None-02698",
21711          "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>"
21712        },
21713        {
21714          "vuid": "VUID-vkCmdDrawIndexed-None-02699",
21715          "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"
21716        },
21717        {
21718          "vuid": "VUID-vkCmdDrawIndexed-None-02700",
21719          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
21720        },
21721        {
21722          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02701",
21723          "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"
21724        },
21725        {
21726          "vuid": "VUID-vkCmdDrawIndexed-None-02859",
21727          "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"
21728        },
21729        {
21730          "vuid": "VUID-vkCmdDrawIndexed-None-02702",
21731          "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"
21732        },
21733        {
21734          "vuid": "VUID-vkCmdDrawIndexed-None-02703",
21735          "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"
21736        },
21737        {
21738          "vuid": "VUID-vkCmdDrawIndexed-None-02704",
21739          "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"
21740        },
21741        {
21742          "vuid": "VUID-vkCmdDrawIndexed-None-02705",
21743          "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"
21744        },
21745        {
21746          "vuid": "VUID-vkCmdDrawIndexed-None-02706",
21747          "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"
21748        },
21749        {
21750          "vuid": "VUID-vkCmdDrawIndexed-None-04115",
21751          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
21752        },
21753        {
21754          "vuid": "VUID-vkCmdDrawIndexed-OpImageWrite-04469",
21755          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
21756        },
21757        {
21758          "vuid": "VUID-vkCmdDrawIndexed-renderPass-02684",
21759          "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>"
21760        },
21761        {
21762          "vuid": "VUID-vkCmdDrawIndexed-subpass-02685",
21763          "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>"
21764        },
21765        {
21766          "vuid": "VUID-vkCmdDrawIndexed-None-02686",
21767          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
21768        },
21769        {
21770          "vuid": "VUID-vkCmdDrawIndexed-None-02687",
21771          "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"
21772        },
21773        {
21774          "vuid": "VUID-vkCmdDrawIndexed-None-04007",
21775          "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"
21776        },
21777        {
21778          "vuid": "VUID-vkCmdDrawIndexed-None-04008",
21779          "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>"
21780        },
21781        {
21782          "vuid": "VUID-vkCmdDrawIndexed-None-02721",
21783          "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>"
21784        },
21785        {
21786          "vuid": "VUID-vkCmdDrawIndexed-indexSize-00463",
21787          "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>"
21788        },
21789        {
21790          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-parameter",
21791          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
21792        },
21793        {
21794          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-recording",
21795          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
21796        },
21797        {
21798          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-cmdpool",
21799          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
21800        },
21801        {
21802          "vuid": "VUID-vkCmdDrawIndexed-renderpass",
21803          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
21804        }
21805      ],
21806      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
21807        {
21808          "vuid": "VUID-vkCmdDrawIndexed-None-02692",
21809          "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>"
21810        }
21811      ],
21812      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
21813        {
21814          "vuid": "VUID-vkCmdDrawIndexed-None-02693",
21815          "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>"
21816        }
21817      ],
21818      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
21819        {
21820          "vuid": "VUID-vkCmdDrawIndexed-filterCubic-02694",
21821          "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>"
21822        },
21823        {
21824          "vuid": "VUID-vkCmdDrawIndexed-filterCubicMinmax-02695",
21825          "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>"
21826        }
21827      ],
21828      "(VK_NV_corner_sampled_image)": [
21829        {
21830          "vuid": "VUID-vkCmdDrawIndexed-flags-02696",
21831          "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>"
21832        }
21833      ],
21834      "(VK_VERSION_1_1)": [
21835        {
21836          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02707",
21837          "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"
21838        },
21839        {
21840          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02712",
21841          "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"
21842        },
21843        {
21844          "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02713",
21845          "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"
21846        }
21847      ],
21848      "(VK_EXT_shader_image_atomic_int64)": [
21849        {
21850          "vuid": "VUID-vkCmdDrawIndexed-SampledType-04470",
21851          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
21852        },
21853        {
21854          "vuid": "VUID-vkCmdDrawIndexed-SampledType-04471",
21855          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
21856        },
21857        {
21858          "vuid": "VUID-vkCmdDrawIndexed-SampledType-04472",
21859          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
21860        },
21861        {
21862          "vuid": "VUID-vkCmdDrawIndexed-SampledType-04473",
21863          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
21864        },
21865        {
21866          "vuid": "VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04474",
21867          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
21868        },
21869        {
21870          "vuid": "VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04475",
21871          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
21872        }
21873      ],
21874      "(VK_VERSION_1_1,VK_KHR_multiview)": [
21875        {
21876          "vuid": "VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688",
21877          "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>"
21878        }
21879      ],
21880      "(VK_EXT_sample_locations)": [
21881        {
21882          "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-02689",
21883          "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"
21884        }
21885      ],
21886      "(VK_EXT_extended_dynamic_state)": [
21887        {
21888          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-03417",
21889          "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 <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"
21890        },
21891        {
21892          "vuid": "VUID-vkCmdDrawIndexed-scissorCount-03418",
21893          "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 <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"
21894        },
21895        {
21896          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-03419",
21897          "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>"
21898        },
21899        {
21900          "vuid": "VUID-vkCmdDrawIndexed-primitiveTopology-03420",
21901          "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"
21902        }
21903      ],
21904      "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
21905        {
21906          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-04137",
21907          "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_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
21908        },
21909        {
21910          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-04138",
21911          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
21912        }
21913      ],
21914      "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
21915        {
21916          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-04139",
21917          "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_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
21918        },
21919        {
21920          "vuid": "VUID-vkCmdDrawIndexed-viewportCount-04140",
21921          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
21922        }
21923      ],
21924      "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
21925        {
21926          "vuid": "VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04141",
21927          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
21928        }
21929      ],
21930      "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
21931        {
21932          "vuid": "VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04142",
21933          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
21934        }
21935      ],
21936      "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [
21937        {
21938          "vuid": "VUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-04552",
21939          "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, 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> be <code>1</code>"
21940        }
21941      ]
21942    },
21943    "vkCmdDrawIndirect": {
21944      "core": [
21945        {
21946          "vuid": "VUID-vkCmdDrawIndirect-magFilter-04553",
21947          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
21948        },
21949        {
21950          "vuid": "VUID-vkCmdDrawIndirect-None-02691",
21951          "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>"
21952        },
21953        {
21954          "vuid": "VUID-vkCmdDrawIndirect-None-02697",
21955          "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>"
21956        },
21957        {
21958          "vuid": "VUID-vkCmdDrawIndirect-None-02698",
21959          "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>"
21960        },
21961        {
21962          "vuid": "VUID-vkCmdDrawIndirect-None-02699",
21963          "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"
21964        },
21965        {
21966          "vuid": "VUID-vkCmdDrawIndirect-None-02700",
21967          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
21968        },
21969        {
21970          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02701",
21971          "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"
21972        },
21973        {
21974          "vuid": "VUID-vkCmdDrawIndirect-None-02859",
21975          "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"
21976        },
21977        {
21978          "vuid": "VUID-vkCmdDrawIndirect-None-02702",
21979          "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"
21980        },
21981        {
21982          "vuid": "VUID-vkCmdDrawIndirect-None-02703",
21983          "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"
21984        },
21985        {
21986          "vuid": "VUID-vkCmdDrawIndirect-None-02704",
21987          "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"
21988        },
21989        {
21990          "vuid": "VUID-vkCmdDrawIndirect-None-02705",
21991          "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"
21992        },
21993        {
21994          "vuid": "VUID-vkCmdDrawIndirect-None-02706",
21995          "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"
21996        },
21997        {
21998          "vuid": "VUID-vkCmdDrawIndirect-None-04115",
21999          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
22000        },
22001        {
22002          "vuid": "VUID-vkCmdDrawIndirect-OpImageWrite-04469",
22003          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
22004        },
22005        {
22006          "vuid": "VUID-vkCmdDrawIndirect-renderPass-02684",
22007          "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>"
22008        },
22009        {
22010          "vuid": "VUID-vkCmdDrawIndirect-subpass-02685",
22011          "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>"
22012        },
22013        {
22014          "vuid": "VUID-vkCmdDrawIndirect-None-02686",
22015          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
22016        },
22017        {
22018          "vuid": "VUID-vkCmdDrawIndirect-None-02687",
22019          "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"
22020        },
22021        {
22022          "vuid": "VUID-vkCmdDrawIndirect-None-04007",
22023          "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"
22024        },
22025        {
22026          "vuid": "VUID-vkCmdDrawIndirect-None-04008",
22027          "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>"
22028        },
22029        {
22030          "vuid": "VUID-vkCmdDrawIndirect-None-02721",
22031          "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>"
22032        },
22033        {
22034          "vuid": "VUID-vkCmdDrawIndirect-buffer-02708",
22035          "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"
22036        },
22037        {
22038          "vuid": "VUID-vkCmdDrawIndirect-buffer-02709",
22039          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
22040        },
22041        {
22042          "vuid": "VUID-vkCmdDrawIndirect-offset-02710",
22043          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
22044        },
22045        {
22046          "vuid": "VUID-vkCmdDrawIndirect-drawCount-02718",
22047          "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>"
22048        },
22049        {
22050          "vuid": "VUID-vkCmdDrawIndirect-drawCount-02719",
22051          "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
22052        },
22053        {
22054          "vuid": "VUID-vkCmdDrawIndirect-firstInstance-00478",
22055          "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>"
22056        },
22057        {
22058          "vuid": "VUID-vkCmdDrawIndirect-drawCount-00476",
22059          "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>)"
22060        },
22061        {
22062          "vuid": "VUID-vkCmdDrawIndirect-drawCount-00487",
22063          "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>"
22064        },
22065        {
22066          "vuid": "VUID-vkCmdDrawIndirect-drawCount-00488",
22067          "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>"
22068        },
22069        {
22070          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-parameter",
22071          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
22072        },
22073        {
22074          "vuid": "VUID-vkCmdDrawIndirect-buffer-parameter",
22075          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
22076        },
22077        {
22078          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-recording",
22079          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
22080        },
22081        {
22082          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-cmdpool",
22083          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
22084        },
22085        {
22086          "vuid": "VUID-vkCmdDrawIndirect-renderpass",
22087          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
22088        },
22089        {
22090          "vuid": "VUID-vkCmdDrawIndirect-commonparent",
22091          "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>"
22092        }
22093      ],
22094      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
22095        {
22096          "vuid": "VUID-vkCmdDrawIndirect-None-02692",
22097          "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>"
22098        }
22099      ],
22100      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
22101        {
22102          "vuid": "VUID-vkCmdDrawIndirect-None-02693",
22103          "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>"
22104        }
22105      ],
22106      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
22107        {
22108          "vuid": "VUID-vkCmdDrawIndirect-filterCubic-02694",
22109          "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>"
22110        },
22111        {
22112          "vuid": "VUID-vkCmdDrawIndirect-filterCubicMinmax-02695",
22113          "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>"
22114        }
22115      ],
22116      "(VK_NV_corner_sampled_image)": [
22117        {
22118          "vuid": "VUID-vkCmdDrawIndirect-flags-02696",
22119          "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>"
22120        }
22121      ],
22122      "(VK_VERSION_1_1)": [
22123        {
22124          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02707",
22125          "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"
22126        },
22127        {
22128          "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02711",
22129          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
22130        }
22131      ],
22132      "(VK_EXT_shader_image_atomic_int64)": [
22133        {
22134          "vuid": "VUID-vkCmdDrawIndirect-SampledType-04470",
22135          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
22136        },
22137        {
22138          "vuid": "VUID-vkCmdDrawIndirect-SampledType-04471",
22139          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
22140        },
22141        {
22142          "vuid": "VUID-vkCmdDrawIndirect-SampledType-04472",
22143          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
22144        },
22145        {
22146          "vuid": "VUID-vkCmdDrawIndirect-SampledType-04473",
22147          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
22148        },
22149        {
22150          "vuid": "VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04474",
22151          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
22152        },
22153        {
22154          "vuid": "VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04475",
22155          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
22156        }
22157      ],
22158      "(VK_VERSION_1_1,VK_KHR_multiview)": [
22159        {
22160          "vuid": "VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-02688",
22161          "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>"
22162        }
22163      ],
22164      "(VK_EXT_sample_locations)": [
22165        {
22166          "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-02689",
22167          "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"
22168        }
22169      ],
22170      "(VK_EXT_extended_dynamic_state)": [
22171        {
22172          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-03417",
22173          "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 <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"
22174        },
22175        {
22176          "vuid": "VUID-vkCmdDrawIndirect-scissorCount-03418",
22177          "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 <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"
22178        },
22179        {
22180          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-03419",
22181          "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>"
22182        },
22183        {
22184          "vuid": "VUID-vkCmdDrawIndirect-primitiveTopology-03420",
22185          "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"
22186        }
22187      ],
22188      "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
22189        {
22190          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-04137",
22191          "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_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22192        },
22193        {
22194          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-04138",
22195          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22196        }
22197      ],
22198      "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
22199        {
22200          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-04139",
22201          "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_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22202        },
22203        {
22204          "vuid": "VUID-vkCmdDrawIndirect-viewportCount-04140",
22205          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22206        }
22207      ],
22208      "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
22209        {
22210          "vuid": "VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04141",
22211          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22212        }
22213      ],
22214      "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
22215        {
22216          "vuid": "VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04142",
22217          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22218        }
22219      ],
22220      "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [
22221        {
22222          "vuid": "VUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552",
22223          "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, 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> be <code>1</code>"
22224        }
22225      ]
22226    },
22227    "VkDrawIndirectCommand": {
22228      "core": [
22229        {
22230          "vuid": "VUID-VkDrawIndirectCommand-None-00500",
22231          "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>"
22232        },
22233        {
22234          "vuid": "VUID-VkDrawIndirectCommand-firstInstance-00501",
22235          "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>"
22236        }
22237      ]
22238    },
22239    "vkCmdDrawIndirectCount": {
22240      "core": [
22241        {
22242          "vuid": "VUID-vkCmdDrawIndirectCount-magFilter-04553",
22243          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
22244        },
22245        {
22246          "vuid": "VUID-vkCmdDrawIndirectCount-None-02691",
22247          "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>"
22248        },
22249        {
22250          "vuid": "VUID-vkCmdDrawIndirectCount-None-02697",
22251          "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>"
22252        },
22253        {
22254          "vuid": "VUID-vkCmdDrawIndirectCount-None-02698",
22255          "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>"
22256        },
22257        {
22258          "vuid": "VUID-vkCmdDrawIndirectCount-None-02699",
22259          "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"
22260        },
22261        {
22262          "vuid": "VUID-vkCmdDrawIndirectCount-None-02700",
22263          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
22264        },
22265        {
22266          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-02701",
22267          "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"
22268        },
22269        {
22270          "vuid": "VUID-vkCmdDrawIndirectCount-None-02859",
22271          "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"
22272        },
22273        {
22274          "vuid": "VUID-vkCmdDrawIndirectCount-None-02702",
22275          "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"
22276        },
22277        {
22278          "vuid": "VUID-vkCmdDrawIndirectCount-None-02703",
22279          "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"
22280        },
22281        {
22282          "vuid": "VUID-vkCmdDrawIndirectCount-None-02704",
22283          "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"
22284        },
22285        {
22286          "vuid": "VUID-vkCmdDrawIndirectCount-None-02705",
22287          "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"
22288        },
22289        {
22290          "vuid": "VUID-vkCmdDrawIndirectCount-None-02706",
22291          "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"
22292        },
22293        {
22294          "vuid": "VUID-vkCmdDrawIndirectCount-None-04115",
22295          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
22296        },
22297        {
22298          "vuid": "VUID-vkCmdDrawIndirectCount-OpImageWrite-04469",
22299          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
22300        },
22301        {
22302          "vuid": "VUID-vkCmdDrawIndirectCount-renderPass-02684",
22303          "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>"
22304        },
22305        {
22306          "vuid": "VUID-vkCmdDrawIndirectCount-subpass-02685",
22307          "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>"
22308        },
22309        {
22310          "vuid": "VUID-vkCmdDrawIndirectCount-None-02686",
22311          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
22312        },
22313        {
22314          "vuid": "VUID-vkCmdDrawIndirectCount-None-02687",
22315          "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"
22316        },
22317        {
22318          "vuid": "VUID-vkCmdDrawIndirectCount-None-04007",
22319          "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"
22320        },
22321        {
22322          "vuid": "VUID-vkCmdDrawIndirectCount-None-04008",
22323          "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>"
22324        },
22325        {
22326          "vuid": "VUID-vkCmdDrawIndirectCount-None-02721",
22327          "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>"
22328        },
22329        {
22330          "vuid": "VUID-vkCmdDrawIndirectCount-buffer-02708",
22331          "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"
22332        },
22333        {
22334          "vuid": "VUID-vkCmdDrawIndirectCount-buffer-02709",
22335          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
22336        },
22337        {
22338          "vuid": "VUID-vkCmdDrawIndirectCount-offset-02710",
22339          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
22340        },
22341        {
22342          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-02714",
22343          "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"
22344        },
22345        {
22346          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-02715",
22347          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
22348        },
22349        {
22350          "vuid": "VUID-vkCmdDrawIndirectCount-countBufferOffset-02716",
22351          "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
22352        },
22353        {
22354          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-02717",
22355          "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>"
22356        },
22357        {
22358          "vuid": "VUID-vkCmdDrawIndirectCount-countBufferOffset-04129",
22359          "text": " <span class=\"eq\">(<code>countBufferOffset</code> &#43; <code>sizeof</code>(uint32_t))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>countBuffer</code>"
22360        },
22361        {
22362          "vuid": "VUID-vkCmdDrawIndirectCount-stride-03110",
22363          "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>)"
22364        },
22365        {
22366          "vuid": "VUID-vkCmdDrawIndirectCount-maxDrawCount-03111",
22367          "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>"
22368        },
22369        {
22370          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-03121",
22371          "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>"
22372        },
22373        {
22374          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-03122",
22375          "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>"
22376        }
22377      ],
22378      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
22379        {
22380          "vuid": "VUID-vkCmdDrawIndirectCount-None-02692",
22381          "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>"
22382        }
22383      ],
22384      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
22385        {
22386          "vuid": "VUID-vkCmdDrawIndirectCount-None-02693",
22387          "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>"
22388        }
22389      ],
22390      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
22391        {
22392          "vuid": "VUID-vkCmdDrawIndirectCount-filterCubic-02694",
22393          "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>"
22394        },
22395        {
22396          "vuid": "VUID-vkCmdDrawIndirectCount-filterCubicMinmax-02695",
22397          "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>"
22398        }
22399      ],
22400      "(VK_NV_corner_sampled_image)": [
22401        {
22402          "vuid": "VUID-vkCmdDrawIndirectCount-flags-02696",
22403          "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>"
22404        }
22405      ],
22406      "(VK_VERSION_1_1)": [
22407        {
22408          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-02707",
22409          "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"
22410        },
22411        {
22412          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-02711",
22413          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
22414        }
22415      ],
22416      "(VK_EXT_shader_image_atomic_int64)": [
22417        {
22418          "vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04470",
22419          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
22420        },
22421        {
22422          "vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04471",
22423          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
22424        },
22425        {
22426          "vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04472",
22427          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
22428        },
22429        {
22430          "vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04473",
22431          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
22432        },
22433        {
22434          "vuid": "VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04474",
22435          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
22436        },
22437        {
22438          "vuid": "VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04475",
22439          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
22440        }
22441      ],
22442      "(VK_VERSION_1_1,VK_KHR_multiview)": [
22443        {
22444          "vuid": "VUID-vkCmdDrawIndirectCount-maxMultiviewInstanceIndex-02688",
22445          "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>"
22446        }
22447      ],
22448      "(VK_EXT_sample_locations)": [
22449        {
22450          "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-02689",
22451          "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"
22452        }
22453      ],
22454      "(VK_EXT_extended_dynamic_state)": [
22455        {
22456          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-03417",
22457          "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 <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"
22458        },
22459        {
22460          "vuid": "VUID-vkCmdDrawIndirectCount-scissorCount-03418",
22461          "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 <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"
22462        },
22463        {
22464          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-03419",
22465          "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>"
22466        },
22467        {
22468          "vuid": "VUID-vkCmdDrawIndirectCount-primitiveTopology-03420",
22469          "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"
22470        }
22471      ],
22472      "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
22473        {
22474          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04137",
22475          "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_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22476        },
22477        {
22478          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04138",
22479          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22480        }
22481      ],
22482      "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
22483        {
22484          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04139",
22485          "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_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22486        },
22487        {
22488          "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04140",
22489          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22490        }
22491      ],
22492      "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
22493        {
22494          "vuid": "VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04141",
22495          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22496        }
22497      ],
22498      "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
22499        {
22500          "vuid": "VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04142",
22501          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22502        }
22503      ],
22504      "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [
22505        {
22506          "vuid": "VUID-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552",
22507          "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, 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> be <code>1</code>"
22508        }
22509      ],
22510      "(VK_VERSION_1_2)": [
22511        {
22512          "vuid": "VUID-vkCmdDrawIndirectCount-None-04445",
22513          "text": " If <a href=\"#features-drawIndirectCount\">drawIndirectCount</a> is not enabled this function <strong class=\"purple\">must</strong> not be used"
22514        }
22515      ],
22516      "(VK_VERSION_1_2,VK_KHR_draw_indirect_count)": [
22517        {
22518          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-parameter",
22519          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
22520        },
22521        {
22522          "vuid": "VUID-vkCmdDrawIndirectCount-buffer-parameter",
22523          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
22524        },
22525        {
22526          "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-parameter",
22527          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
22528        },
22529        {
22530          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-recording",
22531          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
22532        },
22533        {
22534          "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-cmdpool",
22535          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
22536        },
22537        {
22538          "vuid": "VUID-vkCmdDrawIndirectCount-renderpass",
22539          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
22540        },
22541        {
22542          "vuid": "VUID-vkCmdDrawIndirectCount-commonparent",
22543          "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>"
22544        }
22545      ]
22546    },
22547    "vkCmdDrawIndexedIndirect": {
22548      "core": [
22549        {
22550          "vuid": "VUID-vkCmdDrawIndexedIndirect-magFilter-04553",
22551          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
22552        },
22553        {
22554          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02691",
22555          "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>"
22556        },
22557        {
22558          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02697",
22559          "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>"
22560        },
22561        {
22562          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02698",
22563          "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>"
22564        },
22565        {
22566          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02699",
22567          "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"
22568        },
22569        {
22570          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02700",
22571          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
22572        },
22573        {
22574          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02701",
22575          "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"
22576        },
22577        {
22578          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02859",
22579          "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"
22580        },
22581        {
22582          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02702",
22583          "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"
22584        },
22585        {
22586          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02703",
22587          "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"
22588        },
22589        {
22590          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02704",
22591          "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"
22592        },
22593        {
22594          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02705",
22595          "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"
22596        },
22597        {
22598          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02706",
22599          "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"
22600        },
22601        {
22602          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04115",
22603          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
22604        },
22605        {
22606          "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWrite-04469",
22607          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
22608        },
22609        {
22610          "vuid": "VUID-vkCmdDrawIndexedIndirect-renderPass-02684",
22611          "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>"
22612        },
22613        {
22614          "vuid": "VUID-vkCmdDrawIndexedIndirect-subpass-02685",
22615          "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>"
22616        },
22617        {
22618          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02686",
22619          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
22620        },
22621        {
22622          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02687",
22623          "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"
22624        },
22625        {
22626          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04007",
22627          "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"
22628        },
22629        {
22630          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04008",
22631          "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>"
22632        },
22633        {
22634          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02721",
22635          "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>"
22636        },
22637        {
22638          "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-02708",
22639          "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"
22640        },
22641        {
22642          "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-02709",
22643          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
22644        },
22645        {
22646          "vuid": "VUID-vkCmdDrawIndexedIndirect-offset-02710",
22647          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
22648        },
22649        {
22650          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-02718",
22651          "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>"
22652        },
22653        {
22654          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-02719",
22655          "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
22656        },
22657        {
22658          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00528",
22659          "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>)"
22660        },
22661        {
22662          "vuid": "VUID-vkCmdDrawIndexedIndirect-firstInstance-00530",
22663          "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>"
22664        },
22665        {
22666          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00539",
22667          "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>"
22668        },
22669        {
22670          "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00540",
22671          "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>"
22672        },
22673        {
22674          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter",
22675          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
22676        },
22677        {
22678          "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-parameter",
22679          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
22680        },
22681        {
22682          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-recording",
22683          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
22684        },
22685        {
22686          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool",
22687          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
22688        },
22689        {
22690          "vuid": "VUID-vkCmdDrawIndexedIndirect-renderpass",
22691          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
22692        },
22693        {
22694          "vuid": "VUID-vkCmdDrawIndexedIndirect-commonparent",
22695          "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>"
22696        }
22697      ],
22698      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
22699        {
22700          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02692",
22701          "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>"
22702        }
22703      ],
22704      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
22705        {
22706          "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02693",
22707          "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>"
22708        }
22709      ],
22710      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
22711        {
22712          "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubic-02694",
22713          "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>"
22714        },
22715        {
22716          "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695",
22717          "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>"
22718        }
22719      ],
22720      "(VK_NV_corner_sampled_image)": [
22721        {
22722          "vuid": "VUID-vkCmdDrawIndexedIndirect-flags-02696",
22723          "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>"
22724        }
22725      ],
22726      "(VK_VERSION_1_1)": [
22727        {
22728          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707",
22729          "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"
22730        },
22731        {
22732          "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711",
22733          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
22734        }
22735      ],
22736      "(VK_EXT_shader_image_atomic_int64)": [
22737        {
22738          "vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04470",
22739          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
22740        },
22741        {
22742          "vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04471",
22743          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
22744        },
22745        {
22746          "vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04472",
22747          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
22748        },
22749        {
22750          "vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04473",
22751          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
22752        },
22753        {
22754          "vuid": "VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04474",
22755          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
22756        },
22757        {
22758          "vuid": "VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04475",
22759          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
22760        }
22761      ],
22762      "(VK_VERSION_1_1,VK_KHR_multiview)": [
22763        {
22764          "vuid": "VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-02688",
22765          "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>"
22766        }
22767      ],
22768      "(VK_EXT_sample_locations)": [
22769        {
22770          "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-02689",
22771          "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"
22772        }
22773      ],
22774      "(VK_EXT_extended_dynamic_state)": [
22775        {
22776          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-03417",
22777          "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 <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"
22778        },
22779        {
22780          "vuid": "VUID-vkCmdDrawIndexedIndirect-scissorCount-03418",
22781          "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 <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"
22782        },
22783        {
22784          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-03419",
22785          "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>"
22786        },
22787        {
22788          "vuid": "VUID-vkCmdDrawIndexedIndirect-primitiveTopology-03420",
22789          "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"
22790        }
22791      ],
22792      "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
22793        {
22794          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04137",
22795          "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_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22796        },
22797        {
22798          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04138",
22799          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22800        }
22801      ],
22802      "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
22803        {
22804          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04139",
22805          "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_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22806        },
22807        {
22808          "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04140",
22809          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22810        }
22811      ],
22812      "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
22813        {
22814          "vuid": "VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04141",
22815          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22816        }
22817      ],
22818      "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
22819        {
22820          "vuid": "VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04142",
22821          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
22822        }
22823      ],
22824      "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [
22825        {
22826          "vuid": "VUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552",
22827          "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, 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> be <code>1</code>"
22828        }
22829      ]
22830    },
22831    "VkDrawIndexedIndirectCommand": {
22832      "core": [
22833        {
22834          "vuid": "VUID-VkDrawIndexedIndirectCommand-None-00552",
22835          "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>"
22836        },
22837        {
22838          "vuid": "VUID-VkDrawIndexedIndirectCommand-indexSize-00553",
22839          "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>"
22840        },
22841        {
22842          "vuid": "VUID-VkDrawIndexedIndirectCommand-firstInstance-00554",
22843          "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>"
22844        }
22845      ]
22846    },
22847    "vkCmdDrawIndexedIndirectCount": {
22848      "core": [
22849        {
22850          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-magFilter-04553",
22851          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
22852        },
22853        {
22854          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02691",
22855          "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>"
22856        },
22857        {
22858          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02697",
22859          "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>"
22860        },
22861        {
22862          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02698",
22863          "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>"
22864        },
22865        {
22866          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02699",
22867          "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"
22868        },
22869        {
22870          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02700",
22871          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
22872        },
22873        {
22874          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02701",
22875          "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"
22876        },
22877        {
22878          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02859",
22879          "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"
22880        },
22881        {
22882          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02702",
22883          "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"
22884        },
22885        {
22886          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02703",
22887          "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"
22888        },
22889        {
22890          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02704",
22891          "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"
22892        },
22893        {
22894          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02705",
22895          "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"
22896        },
22897        {
22898          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02706",
22899          "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"
22900        },
22901        {
22902          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04115",
22903          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
22904        },
22905        {
22906          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWrite-04469",
22907          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
22908        },
22909        {
22910          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-renderPass-02684",
22911          "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>"
22912        },
22913        {
22914          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-subpass-02685",
22915          "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>"
22916        },
22917        {
22918          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02686",
22919          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
22920        },
22921        {
22922          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02687",
22923          "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"
22924        },
22925        {
22926          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04007",
22927          "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"
22928        },
22929        {
22930          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04008",
22931          "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>"
22932        },
22933        {
22934          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02721",
22935          "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>"
22936        },
22937        {
22938          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-buffer-02708",
22939          "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"
22940        },
22941        {
22942          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-buffer-02709",
22943          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
22944        },
22945        {
22946          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-offset-02710",
22947          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
22948        },
22949        {
22950          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02714",
22951          "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"
22952        },
22953        {
22954          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02715",
22955          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
22956        },
22957        {
22958          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-02716",
22959          "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
22960        },
22961        {
22962          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02717",
22963          "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>"
22964        },
22965        {
22966          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-04129",
22967          "text": " <span class=\"eq\">(<code>countBufferOffset</code> &#43; <code>sizeof</code>(uint32_t))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>countBuffer</code>"
22968        },
22969        {
22970          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-stride-03142",
22971          "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>)"
22972        },
22973        {
22974          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-maxDrawCount-03143",
22975          "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>"
22976        },
22977        {
22978          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-03153",
22979          "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>"
22980        },
22981        {
22982          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-03154",
22983          "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>"
22984        }
22985      ],
22986      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
22987        {
22988          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02692",
22989          "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>"
22990        }
22991      ],
22992      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
22993        {
22994          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02693",
22995          "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>"
22996        }
22997      ],
22998      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
22999        {
23000          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-filterCubic-02694",
23001          "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>"
23002        },
23003        {
23004          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-filterCubicMinmax-02695",
23005          "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>"
23006        }
23007      ],
23008      "(VK_NV_corner_sampled_image)": [
23009        {
23010          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-flags-02696",
23011          "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>"
23012        }
23013      ],
23014      "(VK_VERSION_1_1)": [
23015        {
23016          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02707",
23017          "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"
23018        },
23019        {
23020          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02711",
23021          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
23022        }
23023      ],
23024      "(VK_EXT_shader_image_atomic_int64)": [
23025        {
23026          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04470",
23027          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
23028        },
23029        {
23030          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04471",
23031          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
23032        },
23033        {
23034          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04472",
23035          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
23036        },
23037        {
23038          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04473",
23039          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
23040        },
23041        {
23042          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04474",
23043          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
23044        },
23045        {
23046          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04475",
23047          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
23048        }
23049      ],
23050      "(VK_VERSION_1_1,VK_KHR_multiview)": [
23051        {
23052          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-maxMultiviewInstanceIndex-02688",
23053          "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>"
23054        }
23055      ],
23056      "(VK_EXT_sample_locations)": [
23057        {
23058          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-02689",
23059          "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"
23060        }
23061      ],
23062      "(VK_EXT_extended_dynamic_state)": [
23063        {
23064          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03417",
23065          "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 <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"
23066        },
23067        {
23068          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-scissorCount-03418",
23069          "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 <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"
23070        },
23071        {
23072          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03419",
23073          "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>"
23074        },
23075        {
23076          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-primitiveTopology-03420",
23077          "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"
23078        }
23079      ],
23080      "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
23081        {
23082          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04137",
23083          "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_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23084        },
23085        {
23086          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04138",
23087          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23088        }
23089      ],
23090      "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
23091        {
23092          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04139",
23093          "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_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23094        },
23095        {
23096          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04140",
23097          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23098        }
23099      ],
23100      "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
23101        {
23102          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04141",
23103          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23104        }
23105      ],
23106      "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
23107        {
23108          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04142",
23109          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23110        }
23111      ],
23112      "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [
23113        {
23114          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552",
23115          "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, 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> be <code>1</code>"
23116        }
23117      ],
23118      "(VK_VERSION_1_2)": [
23119        {
23120          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04445",
23121          "text": " If <a href=\"#features-drawIndirectCount\">drawIndirectCount</a> is not enabled this function <strong class=\"purple\">must</strong> not be used"
23122        }
23123      ],
23124      "(VK_VERSION_1_2,VK_KHR_draw_indirect_count)": [
23125        {
23126          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-parameter",
23127          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
23128        },
23129        {
23130          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-buffer-parameter",
23131          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
23132        },
23133        {
23134          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-parameter",
23135          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
23136        },
23137        {
23138          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-recording",
23139          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23140        },
23141        {
23142          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-cmdpool",
23143          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
23144        },
23145        {
23146          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-renderpass",
23147          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
23148        },
23149        {
23150          "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commonparent",
23151          "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>"
23152        }
23153      ]
23154    },
23155    "vkCmdDrawIndirectByteCountEXT": {
23156      "core": [
23157        {
23158          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-magFilter-04553",
23159          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
23160        },
23161        {
23162          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02691",
23163          "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>"
23164        },
23165        {
23166          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02697",
23167          "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>"
23168        },
23169        {
23170          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02698",
23171          "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>"
23172        },
23173        {
23174          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02699",
23175          "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"
23176        },
23177        {
23178          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02700",
23179          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
23180        },
23181        {
23182          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02701",
23183          "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"
23184        },
23185        {
23186          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02859",
23187          "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"
23188        },
23189        {
23190          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02702",
23191          "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"
23192        },
23193        {
23194          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02703",
23195          "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"
23196        },
23197        {
23198          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02704",
23199          "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"
23200        },
23201        {
23202          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02705",
23203          "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"
23204        },
23205        {
23206          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02706",
23207          "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"
23208        },
23209        {
23210          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04115",
23211          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
23212        },
23213        {
23214          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWrite-04469",
23215          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
23216        },
23217        {
23218          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02684",
23219          "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>"
23220        },
23221        {
23222          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-subpass-02685",
23223          "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>"
23224        },
23225        {
23226          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02686",
23227          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
23228        },
23229        {
23230          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02687",
23231          "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"
23232        },
23233        {
23234          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04007",
23235          "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"
23236        },
23237        {
23238          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04008",
23239          "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>"
23240        },
23241        {
23242          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02721",
23243          "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>"
23244        },
23245        {
23246          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287",
23247          "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
23248        },
23249        {
23250          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288",
23251          "text": " The implementation <strong class=\"purple\">must</strong> support <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackDraw</code>"
23252        },
23253        {
23254          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289",
23255          "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>"
23256        },
23257        {
23258          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290",
23259          "text": " <code>counterBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
23260        }
23261      ],
23262      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
23263        {
23264          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02692",
23265          "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>"
23266        }
23267      ],
23268      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
23269        {
23270          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02693",
23271          "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>"
23272        }
23273      ],
23274      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
23275        {
23276          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02694",
23277          "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>"
23278        },
23279        {
23280          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02695",
23281          "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>"
23282        }
23283      ],
23284      "(VK_NV_corner_sampled_image)": [
23285        {
23286          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-flags-02696",
23287          "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>"
23288        }
23289      ],
23290      "(VK_VERSION_1_1)": [
23291        {
23292          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02707",
23293          "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"
23294        },
23295        {
23296          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646",
23297          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
23298        }
23299      ],
23300      "(VK_EXT_shader_image_atomic_int64)": [
23301        {
23302          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04470",
23303          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
23304        },
23305        {
23306          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04471",
23307          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
23308        },
23309        {
23310          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04472",
23311          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
23312        },
23313        {
23314          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04473",
23315          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
23316        },
23317        {
23318          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04474",
23319          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
23320        },
23321        {
23322          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04475",
23323          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
23324        }
23325      ],
23326      "(VK_VERSION_1_1,VK_KHR_multiview)": [
23327        {
23328          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02688",
23329          "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>"
23330        }
23331      ],
23332      "(VK_EXT_sample_locations)": [
23333        {
23334          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02689",
23335          "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"
23336        }
23337      ],
23338      "(VK_EXT_extended_dynamic_state)": [
23339        {
23340          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03417",
23341          "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 <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"
23342        },
23343        {
23344          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-scissorCount-03418",
23345          "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 <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"
23346        },
23347        {
23348          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03419",
23349          "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>"
23350        },
23351        {
23352          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-primitiveTopology-03420",
23353          "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"
23354        }
23355      ],
23356      "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
23357        {
23358          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04137",
23359          "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_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23360        },
23361        {
23362          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04138",
23363          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23364        }
23365      ],
23366      "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
23367        {
23368          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04139",
23369          "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_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23370        },
23371        {
23372          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04140",
23373          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23374        }
23375      ],
23376      "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
23377        {
23378          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04141",
23379          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23380        }
23381      ],
23382      "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
23383        {
23384          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04142",
23385          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23386        }
23387      ],
23388      "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [
23389        {
23390          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-04552",
23391          "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, 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> be <code>1</code>"
23392        }
23393      ],
23394      "(VK_EXT_transform_feedback)": [
23395        {
23396          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter",
23397          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
23398        },
23399        {
23400          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter",
23401          "text": " <code>counterBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
23402        },
23403        {
23404          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-recording",
23405          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23406        },
23407        {
23408          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool",
23409          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
23410        },
23411        {
23412          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderpass",
23413          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
23414        },
23415        {
23416          "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commonparent",
23417          "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>"
23418        }
23419      ]
23420    },
23421    "vkCmdBeginConditionalRenderingEXT": {
23422      "(VK_EXT_conditional_rendering)": [
23423        {
23424          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-None-01980",
23425          "text": " Conditional rendering <strong class=\"purple\">must</strong> not already be <a href=\"#active-conditional-rendering\">active</a>"
23426        },
23427        {
23428          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter",
23429          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
23430        },
23431        {
23432          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-pConditionalRenderingBegin-parameter",
23433          "text": " <code>pConditionalRenderingBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkConditionalRenderingBeginInfoEXT\">VkConditionalRenderingBeginInfoEXT</a> structure"
23434        },
23435        {
23436          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-recording",
23437          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23438        },
23439        {
23440          "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-cmdpool",
23441          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
23442        }
23443      ]
23444    },
23445    "VkConditionalRenderingBeginInfoEXT": {
23446      "(VK_EXT_conditional_rendering)": [
23447        {
23448          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01981",
23449          "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"
23450        },
23451        {
23452          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01982",
23453          "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"
23454        },
23455        {
23456          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01983",
23457          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code> by at least 32 bits"
23458        },
23459        {
23460          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01984",
23461          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of 4"
23462        },
23463        {
23464          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-sType-sType",
23465          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT</code>"
23466        },
23467        {
23468          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-pNext-pNext",
23469          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
23470        },
23471        {
23472          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-parameter",
23473          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
23474        },
23475        {
23476          "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-flags-parameter",
23477          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkConditionalRenderingFlagBitsEXT\">VkConditionalRenderingFlagBitsEXT</a> values"
23478        }
23479      ]
23480    },
23481    "vkCmdEndConditionalRenderingEXT": {
23482      "(VK_EXT_conditional_rendering)": [
23483        {
23484          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01985",
23485          "text": " Conditional rendering <strong class=\"purple\">must</strong> be <a href=\"#active-conditional-rendering\">active</a>"
23486        },
23487        {
23488          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01986",
23489          "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"
23490        },
23491        {
23492          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01987",
23493          "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"
23494        },
23495        {
23496          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter",
23497          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
23498        },
23499        {
23500          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-recording",
23501          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23502        },
23503        {
23504          "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-cmdpool",
23505          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
23506        }
23507      ]
23508    },
23509    "vkCmdDrawMeshTasksNV": {
23510      "core": [
23511        {
23512          "vuid": "VUID-vkCmdDrawMeshTasksNV-magFilter-04553",
23513          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
23514        },
23515        {
23516          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02691",
23517          "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>"
23518        },
23519        {
23520          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02697",
23521          "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>"
23522        },
23523        {
23524          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02698",
23525          "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>"
23526        },
23527        {
23528          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02699",
23529          "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"
23530        },
23531        {
23532          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02700",
23533          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
23534        },
23535        {
23536          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02701",
23537          "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"
23538        },
23539        {
23540          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02859",
23541          "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"
23542        },
23543        {
23544          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02702",
23545          "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"
23546        },
23547        {
23548          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02703",
23549          "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"
23550        },
23551        {
23552          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02704",
23553          "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"
23554        },
23555        {
23556          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02705",
23557          "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"
23558        },
23559        {
23560          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02706",
23561          "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"
23562        },
23563        {
23564          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-04115",
23565          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
23566        },
23567        {
23568          "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWrite-04469",
23569          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
23570        },
23571        {
23572          "vuid": "VUID-vkCmdDrawMeshTasksNV-renderPass-02684",
23573          "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>"
23574        },
23575        {
23576          "vuid": "VUID-vkCmdDrawMeshTasksNV-subpass-02685",
23577          "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>"
23578        },
23579        {
23580          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02686",
23581          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
23582        },
23583        {
23584          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02687",
23585          "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"
23586        },
23587        {
23588          "vuid": "VUID-vkCmdDrawMeshTasksNV-taskCount-02119",
23589          "text": " <code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>"
23590        }
23591      ],
23592      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
23593        {
23594          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02692",
23595          "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>"
23596        }
23597      ],
23598      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
23599        {
23600          "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02693",
23601          "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>"
23602        }
23603      ],
23604      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
23605        {
23606          "vuid": "VUID-vkCmdDrawMeshTasksNV-filterCubic-02694",
23607          "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>"
23608        },
23609        {
23610          "vuid": "VUID-vkCmdDrawMeshTasksNV-filterCubicMinmax-02695",
23611          "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>"
23612        }
23613      ],
23614      "(VK_NV_corner_sampled_image)": [
23615        {
23616          "vuid": "VUID-vkCmdDrawMeshTasksNV-flags-02696",
23617          "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>"
23618        }
23619      ],
23620      "(VK_VERSION_1_1)": [
23621        {
23622          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02707",
23623          "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"
23624        }
23625      ],
23626      "(VK_EXT_shader_image_atomic_int64)": [
23627        {
23628          "vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04470",
23629          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
23630        },
23631        {
23632          "vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04471",
23633          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
23634        },
23635        {
23636          "vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04472",
23637          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
23638        },
23639        {
23640          "vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04473",
23641          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
23642        },
23643        {
23644          "vuid": "VUID-vkCmdDrawMeshTasksNV-sparseImageInt64Atomics-04474",
23645          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
23646        },
23647        {
23648          "vuid": "VUID-vkCmdDrawMeshTasksNV-sparseImageInt64Atomics-04475",
23649          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
23650        }
23651      ],
23652      "(VK_VERSION_1_1,VK_KHR_multiview)": [
23653        {
23654          "vuid": "VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02688",
23655          "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>"
23656        }
23657      ],
23658      "(VK_EXT_sample_locations)": [
23659        {
23660          "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02689",
23661          "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"
23662        }
23663      ],
23664      "(VK_EXT_extended_dynamic_state)": [
23665        {
23666          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-03417",
23667          "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 <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"
23668        },
23669        {
23670          "vuid": "VUID-vkCmdDrawMeshTasksNV-scissorCount-03418",
23671          "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 <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"
23672        },
23673        {
23674          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-03419",
23675          "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>"
23676        },
23677        {
23678          "vuid": "VUID-vkCmdDrawMeshTasksNV-primitiveTopology-03420",
23679          "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"
23680        }
23681      ],
23682      "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
23683        {
23684          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04137",
23685          "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_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23686        },
23687        {
23688          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04138",
23689          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23690        }
23691      ],
23692      "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
23693        {
23694          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04139",
23695          "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_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23696        },
23697        {
23698          "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04140",
23699          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23700        }
23701      ],
23702      "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
23703        {
23704          "vuid": "VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04141",
23705          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23706        }
23707      ],
23708      "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
23709        {
23710          "vuid": "VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04142",
23711          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23712        }
23713      ],
23714      "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [
23715        {
23716          "vuid": "VUID-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-04552",
23717          "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, 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> be <code>1</code>"
23718        }
23719      ],
23720      "(VK_NV_mesh_shader)": [
23721        {
23722          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter",
23723          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
23724        },
23725        {
23726          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-recording",
23727          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23728        },
23729        {
23730          "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool",
23731          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
23732        },
23733        {
23734          "vuid": "VUID-vkCmdDrawMeshTasksNV-renderpass",
23735          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
23736        }
23737      ]
23738    },
23739    "vkCmdDrawMeshTasksIndirectNV": {
23740      "core": [
23741        {
23742          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-magFilter-04553",
23743          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
23744        },
23745        {
23746          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02691",
23747          "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>"
23748        },
23749        {
23750          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02697",
23751          "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>"
23752        },
23753        {
23754          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02698",
23755          "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>"
23756        },
23757        {
23758          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02699",
23759          "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"
23760        },
23761        {
23762          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02700",
23763          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
23764        },
23765        {
23766          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02701",
23767          "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"
23768        },
23769        {
23770          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02859",
23771          "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"
23772        },
23773        {
23774          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02702",
23775          "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"
23776        },
23777        {
23778          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02703",
23779          "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"
23780        },
23781        {
23782          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02704",
23783          "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"
23784        },
23785        {
23786          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02705",
23787          "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"
23788        },
23789        {
23790          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02706",
23791          "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"
23792        },
23793        {
23794          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-04115",
23795          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
23796        },
23797        {
23798          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWrite-04469",
23799          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
23800        },
23801        {
23802          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02684",
23803          "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>"
23804        },
23805        {
23806          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-subpass-02685",
23807          "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>"
23808        },
23809        {
23810          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02686",
23811          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
23812        },
23813        {
23814          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02687",
23815          "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"
23816        },
23817        {
23818          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708",
23819          "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"
23820        },
23821        {
23822          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02709",
23823          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
23824        },
23825        {
23826          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-offset-02710",
23827          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
23828        },
23829        {
23830          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02718",
23831          "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>"
23832        },
23833        {
23834          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02719",
23835          "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
23836        },
23837        {
23838          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02146",
23839          "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>)"
23840        },
23841        {
23842          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02156",
23843          "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>"
23844        },
23845        {
23846          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157",
23847          "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>"
23848        }
23849      ],
23850      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
23851        {
23852          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02692",
23853          "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>"
23854        }
23855      ],
23856      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
23857        {
23858          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02693",
23859          "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>"
23860        }
23861      ],
23862      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
23863        {
23864          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubic-02694",
23865          "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>"
23866        },
23867        {
23868          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubicMinmax-02695",
23869          "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>"
23870        }
23871      ],
23872      "(VK_NV_corner_sampled_image)": [
23873        {
23874          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-flags-02696",
23875          "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>"
23876        }
23877      ],
23878      "(VK_VERSION_1_1)": [
23879        {
23880          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02707",
23881          "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"
23882        },
23883        {
23884          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02711",
23885          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
23886        }
23887      ],
23888      "(VK_EXT_shader_image_atomic_int64)": [
23889        {
23890          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04470",
23891          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
23892        },
23893        {
23894          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04471",
23895          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
23896        },
23897        {
23898          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04472",
23899          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
23900        },
23901        {
23902          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04473",
23903          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
23904        },
23905        {
23906          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sparseImageInt64Atomics-04474",
23907          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
23908        },
23909        {
23910          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sparseImageInt64Atomics-04475",
23911          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
23912        }
23913      ],
23914      "(VK_VERSION_1_1,VK_KHR_multiview)": [
23915        {
23916          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02688",
23917          "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>"
23918        }
23919      ],
23920      "(VK_EXT_sample_locations)": [
23921        {
23922          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02689",
23923          "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"
23924        }
23925      ],
23926      "(VK_EXT_extended_dynamic_state)": [
23927        {
23928          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03417",
23929          "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 <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"
23930        },
23931        {
23932          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-scissorCount-03418",
23933          "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 <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"
23934        },
23935        {
23936          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03419",
23937          "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>"
23938        },
23939        {
23940          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-primitiveTopology-03420",
23941          "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"
23942        }
23943      ],
23944      "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
23945        {
23946          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04137",
23947          "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_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23948        },
23949        {
23950          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04138",
23951          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23952        }
23953      ],
23954      "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
23955        {
23956          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04139",
23957          "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_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23958        },
23959        {
23960          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04140",
23961          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23962        }
23963      ],
23964      "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
23965        {
23966          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04141",
23967          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23968        }
23969      ],
23970      "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
23971        {
23972          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04142",
23973          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
23974        }
23975      ],
23976      "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [
23977        {
23978          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-04552",
23979          "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, 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> be <code>1</code>"
23980        }
23981      ],
23982      "(VK_NV_mesh_shader)": [
23983        {
23984          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter",
23985          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
23986        },
23987        {
23988          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter",
23989          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
23990        },
23991        {
23992          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-recording",
23993          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23994        },
23995        {
23996          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-cmdpool",
23997          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
23998        },
23999        {
24000          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderpass",
24001          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
24002        },
24003        {
24004          "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commonparent",
24005          "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>"
24006        }
24007      ]
24008    },
24009    "VkDrawMeshTasksIndirectCommandNV": {
24010      "(VK_NV_mesh_shader)": [
24011        {
24012          "vuid": "VUID-VkDrawMeshTasksIndirectCommandNV-taskCount-02175",
24013          "text": " <code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>"
24014        }
24015      ]
24016    },
24017    "vkCmdDrawMeshTasksIndirectCountNV": {
24018      "core": [
24019        {
24020          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-magFilter-04553",
24021          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
24022        },
24023        {
24024          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02691",
24025          "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>"
24026        },
24027        {
24028          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02697",
24029          "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>"
24030        },
24031        {
24032          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02698",
24033          "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>"
24034        },
24035        {
24036          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02699",
24037          "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"
24038        },
24039        {
24040          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02700",
24041          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
24042        },
24043        {
24044          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02701",
24045          "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"
24046        },
24047        {
24048          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02859",
24049          "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"
24050        },
24051        {
24052          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02702",
24053          "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"
24054        },
24055        {
24056          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02703",
24057          "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"
24058        },
24059        {
24060          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02704",
24061          "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"
24062        },
24063        {
24064          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02705",
24065          "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"
24066        },
24067        {
24068          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02706",
24069          "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"
24070        },
24071        {
24072          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04115",
24073          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
24074        },
24075        {
24076          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWrite-04469",
24077          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
24078        },
24079        {
24080          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02684",
24081          "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>"
24082        },
24083        {
24084          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-02685",
24085          "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>"
24086        },
24087        {
24088          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02686",
24089          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
24090        },
24091        {
24092          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02687",
24093          "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"
24094        },
24095        {
24096          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708",
24097          "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"
24098        },
24099        {
24100          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02709",
24101          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
24102        },
24103        {
24104          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-offset-02710",
24105          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
24106        },
24107        {
24108          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02714",
24109          "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"
24110        },
24111        {
24112          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02715",
24113          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
24114        },
24115        {
24116          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-02716",
24117          "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
24118        },
24119        {
24120          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02717",
24121          "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>"
24122        },
24123        {
24124          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-04129",
24125          "text": " <span class=\"eq\">(<code>countBufferOffset</code> &#43; <code>sizeof</code>(uint32_t))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>countBuffer</code>"
24126        },
24127        {
24128          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182",
24129          "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>)"
24130        },
24131        {
24132          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183",
24133          "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>"
24134        },
24135        {
24136          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02191",
24137          "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>"
24138        },
24139        {
24140          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02192",
24141          "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>"
24142        }
24143      ],
24144      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
24145        {
24146          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02692",
24147          "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>"
24148        }
24149      ],
24150      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
24151        {
24152          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02693",
24153          "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>"
24154        }
24155      ],
24156      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
24157        {
24158          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubic-02694",
24159          "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>"
24160        },
24161        {
24162          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubicMinmax-02695",
24163          "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>"
24164        }
24165      ],
24166      "(VK_NV_corner_sampled_image)": [
24167        {
24168          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-02696",
24169          "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>"
24170        }
24171      ],
24172      "(VK_VERSION_1_1)": [
24173        {
24174          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02707",
24175          "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"
24176        },
24177        {
24178          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02711",
24179          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
24180        }
24181      ],
24182      "(VK_EXT_shader_image_atomic_int64)": [
24183        {
24184          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04470",
24185          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
24186        },
24187        {
24188          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04471",
24189          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
24190        },
24191        {
24192          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04472",
24193          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
24194        },
24195        {
24196          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04473",
24197          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
24198        },
24199        {
24200          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sparseImageInt64Atomics-04474",
24201          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
24202        },
24203        {
24204          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sparseImageInt64Atomics-04475",
24205          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
24206        }
24207      ],
24208      "(VK_VERSION_1_1,VK_KHR_multiview)": [
24209        {
24210          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02688",
24211          "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>"
24212        }
24213      ],
24214      "(VK_EXT_sample_locations)": [
24215        {
24216          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02689",
24217          "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"
24218        }
24219      ],
24220      "(VK_EXT_extended_dynamic_state)": [
24221        {
24222          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03417",
24223          "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 <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"
24224        },
24225        {
24226          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-scissorCount-03418",
24227          "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 <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"
24228        },
24229        {
24230          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03419",
24231          "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>"
24232        },
24233        {
24234          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveTopology-03420",
24235          "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"
24236        }
24237      ],
24238      "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
24239        {
24240          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04137",
24241          "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_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
24242        },
24243        {
24244          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04138",
24245          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
24246        }
24247      ],
24248      "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
24249        {
24250          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04139",
24251          "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_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
24252        },
24253        {
24254          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04140",
24255          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
24256        }
24257      ],
24258      "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
24259        {
24260          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04141",
24261          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
24262        }
24263      ],
24264      "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
24265        {
24266          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04142",
24267          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
24268        }
24269      ],
24270      "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [
24271        {
24272          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-04552",
24273          "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, 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> be <code>1</code>"
24274        }
24275      ],
24276      "(VK_VERSION_1_2)": [
24277        {
24278          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04445",
24279          "text": " If <a href=\"#features-drawIndirectCount\">drawIndirectCount</a> is not enabled this function <strong class=\"purple\">must</strong> not be used"
24280        }
24281      ],
24282      "(VK_NV_mesh_shader)": [
24283        {
24284          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter",
24285          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
24286        },
24287        {
24288          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter",
24289          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
24290        },
24291        {
24292          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-parameter",
24293          "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
24294        },
24295        {
24296          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-recording",
24297          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
24298        },
24299        {
24300          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-cmdpool",
24301          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
24302        },
24303        {
24304          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderpass",
24305          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
24306        },
24307        {
24308          "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent",
24309          "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>"
24310        }
24311      ]
24312    },
24313    "VkPipelineVertexInputStateCreateInfo": {
24314      "core": [
24315        {
24316          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613",
24317          "text": " <code>vertexBindingDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
24318        },
24319        {
24320          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614",
24321          "text": " <code>vertexAttributeDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>"
24322        },
24323        {
24324          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-binding-00615",
24325          "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>"
24326        },
24327        {
24328          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616",
24329          "text": " All elements of <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> describe distinct binding numbers"
24330        },
24331        {
24332          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617",
24333          "text": " All elements of <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> describe distinct attribute locations"
24334        },
24335        {
24336          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-sType-sType",
24337          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO</code>"
24338        },
24339        {
24340          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext",
24341          "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>"
24342        },
24343        {
24344          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-sType-unique",
24345          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
24346        },
24347        {
24348          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask",
24349          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24350        },
24351        {
24352          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter",
24353          "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"
24354        },
24355        {
24356          "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter",
24357          "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"
24358        }
24359      ]
24360    },
24361    "VkVertexInputBindingDescription": {
24362      "core": [
24363        {
24364          "vuid": "VUID-VkVertexInputBindingDescription-binding-00618",
24365          "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
24366        },
24367        {
24368          "vuid": "VUID-VkVertexInputBindingDescription-stride-00619",
24369          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindingStride</code>"
24370        },
24371        {
24372          "vuid": "VUID-VkVertexInputBindingDescription-inputRate-parameter",
24373          "text": " <code>inputRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVertexInputRate\">VkVertexInputRate</a> value"
24374        }
24375      ],
24376      "(VK_KHR_portability_subset)": [
24377        {
24378          "vuid": "VUID-VkVertexInputBindingDescription-stride-04456",
24379          "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of, and at least as large as, <a href=\"#VkPhysicalDevicePortabilitySubsetPropertiesKHR\">VkPhysicalDevicePortabilitySubsetPropertiesKHR</a>::<code>minVertexInputBindingStrideAlignment</code>."
24380        }
24381      ]
24382    },
24383    "VkVertexInputAttributeDescription": {
24384      "core": [
24385        {
24386          "vuid": "VUID-VkVertexInputAttributeDescription-location-00620",
24387          "text": " <code>location</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>"
24388        },
24389        {
24390          "vuid": "VUID-VkVertexInputAttributeDescription-binding-00621",
24391          "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
24392        },
24393        {
24394          "vuid": "VUID-VkVertexInputAttributeDescription-offset-00622",
24395          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributeOffset</code>"
24396        },
24397        {
24398          "vuid": "VUID-VkVertexInputAttributeDescription-format-00623",
24399          "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>"
24400        },
24401        {
24402          "vuid": "VUID-VkVertexInputAttributeDescription-format-parameter",
24403          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
24404        }
24405      ],
24406      "(VK_KHR_portability_subset)": [
24407        {
24408          "vuid": "VUID-VkVertexInputAttributeDescription-vertexAttributeAccessBeyondStride-04457",
24409          "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>vertexAttributeAccessBeyondStride</code> is <code>VK_FALSE</code>, the sum of <code>offset</code> plus the size of the vertex attribute data described by <code>format</code> <strong class=\"purple\">must</strong> not be greater than <code>stride</code> in the <a href=\"#VkVertexInputBindingDescription\">VkVertexInputBindingDescription</a> referenced in <code>binding</code>."
24410        }
24411      ]
24412    },
24413    "vkCmdBindVertexBuffers": {
24414      "core": [
24415        {
24416          "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00624",
24417          "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
24418        },
24419        {
24420          "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00625",
24421          "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>"
24422        },
24423        {
24424          "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-00626",
24425          "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>"
24426        },
24427        {
24428          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00627",
24429          "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"
24430        },
24431        {
24432          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00628",
24433          "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"
24434        },
24435        {
24436          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-04001",
24437          "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>"
24438        },
24439        {
24440          "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-parameter",
24441          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
24442        },
24443        {
24444          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-parameter",
24445          "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"
24446        },
24447        {
24448          "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-parameter",
24449          "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
24450        },
24451        {
24452          "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-recording",
24453          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
24454        },
24455        {
24456          "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-cmdpool",
24457          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
24458        },
24459        {
24460          "vuid": "VUID-vkCmdBindVertexBuffers-bindingCount-arraylength",
24461          "text": " <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
24462        },
24463        {
24464          "vuid": "VUID-vkCmdBindVertexBuffers-commonparent",
24465          "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>"
24466        }
24467      ],
24468      "(VK_EXT_robustness2)": [
24469        {
24470          "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-04002",
24471          "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"
24472        }
24473      ]
24474    },
24475    "vkCmdBindVertexBuffers2EXT": {
24476      "(VK_EXT_extended_dynamic_state)": [
24477        {
24478          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-firstBinding-03355",
24479          "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
24480        },
24481        {
24482          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-firstBinding-03356",
24483          "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>"
24484        },
24485        {
24486          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pOffsets-03357",
24487          "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>"
24488        },
24489        {
24490          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pSizes-03358",
24491          "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>"
24492        },
24493        {
24494          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pBuffers-03359",
24495          "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"
24496        },
24497        {
24498          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pBuffers-03360",
24499          "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"
24500        },
24501        {
24502          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pBuffers-04111",
24503          "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>"
24504        },
24505        {
24506          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pStrides-03361",
24507          "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>"
24508        },
24509        {
24510          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pStrides-03362",
24511          "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>"
24512        },
24513        {
24514          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pStrides-03363",
24515          "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"
24516        },
24517        {
24518          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-parameter",
24519          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
24520        },
24521        {
24522          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pBuffers-parameter",
24523          "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"
24524        },
24525        {
24526          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pOffsets-parameter",
24527          "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
24528        },
24529        {
24530          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pSizes-parameter",
24531          "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"
24532        },
24533        {
24534          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pStrides-parameter",
24535          "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"
24536        },
24537        {
24538          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-recording",
24539          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
24540        },
24541        {
24542          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-cmdpool",
24543          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
24544        },
24545        {
24546          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-bindingCount-arraylength",
24547          "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>"
24548        },
24549        {
24550          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-commonparent",
24551          "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>"
24552        }
24553      ],
24554      "(VK_EXT_extended_dynamic_state)+(VK_EXT_robustness2)": [
24555        {
24556          "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pBuffers-04112",
24557          "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"
24558        }
24559      ]
24560    },
24561    "VkPipelineVertexInputDivisorStateCreateInfoEXT": {
24562      "(VK_EXT_vertex_attribute_divisor)": [
24563        {
24564          "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-sType-sType",
24565          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT</code>"
24566        },
24567        {
24568          "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-pVertexBindingDivisors-parameter",
24569          "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"
24570        },
24571        {
24572          "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-vertexBindingDivisorCount-arraylength",
24573          "text": " <code>vertexBindingDivisorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
24574        }
24575      ]
24576    },
24577    "VkVertexInputBindingDivisorDescriptionEXT": {
24578      "(VK_EXT_vertex_attribute_divisor)": [
24579        {
24580          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-binding-01869",
24581          "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
24582        },
24583        {
24584          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateZeroDivisor-02228",
24585          "text": " If the <code>vertexAttributeInstanceRateZeroDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
24586        },
24587        {
24588          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateDivisor-02229",
24589          "text": " If the <code>vertexAttributeInstanceRateDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> be <code>1</code>"
24590        },
24591        {
24592          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-divisor-01870",
24593          "text": " <code>divisor</code> <strong class=\"purple\">must</strong> be a value between <code>0</code> and <code>VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</code>::<code>maxVertexAttribDivisor</code>, inclusive"
24594        },
24595        {
24596          "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-inputRate-01871",
24597          "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>"
24598        }
24599      ]
24600    },
24601    "VkPipelineTessellationStateCreateInfo": {
24602      "core": [
24603        {
24604          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214",
24605          "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>"
24606        },
24607        {
24608          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-sType",
24609          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO</code>"
24610        },
24611        {
24612          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext",
24613          "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>"
24614        },
24615        {
24616          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-unique",
24617          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
24618        },
24619        {
24620          "vuid": "VUID-VkPipelineTessellationStateCreateInfo-flags-zerobitmask",
24621          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24622        }
24623      ]
24624    },
24625    "VkPipelineTessellationDomainOriginStateCreateInfo": {
24626      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
24627        {
24628          "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-sType-sType",
24629          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO</code>"
24630        },
24631        {
24632          "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-domainOrigin-parameter",
24633          "text": " <code>domainOrigin</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTessellationDomainOrigin\">VkTessellationDomainOrigin</a> value"
24634        }
24635      ]
24636    },
24637    "vkCmdBindTransformFeedbackBuffersEXT": {
24638      "(VK_EXT_transform_feedback)": [
24639        {
24640          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355",
24641          "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
24642        },
24643        {
24644          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02356",
24645          "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
24646        },
24647        {
24648          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02357",
24649          "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>"
24650        },
24651        {
24652          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02358",
24653          "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>"
24654        },
24655        {
24656          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02359",
24657          "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be a multiple of 4"
24658        },
24659        {
24660          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02360",
24661          "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"
24662        },
24663        {
24664          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSize-02361",
24665          "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>"
24666        },
24667        {
24668          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-02362",
24669          "text": " All elements of <code>pSizes</code> <strong class=\"purple\">must</strong> be either <code>VK_WHOLE_SIZE</code>, or less than or equal to the size of the corresponding buffer in <code>pBuffers</code>"
24670        },
24671        {
24672          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02363",
24673          "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 buffer in <code>pBuffers</code>"
24674        },
24675        {
24676          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02364",
24677          "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"
24678        },
24679        {
24680          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-None-02365",
24681          "text": " Transform feedback <strong class=\"purple\">must</strong> not be active when the <code>vkCmdBindTransformFeedbackBuffersEXT</code> command is recorded"
24682        },
24683        {
24684          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter",
24685          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
24686        },
24687        {
24688          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-parameter",
24689          "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"
24690        },
24691        {
24692          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-parameter",
24693          "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
24694        },
24695        {
24696          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-recording",
24697          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
24698        },
24699        {
24700          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-cmdpool",
24701          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
24702        },
24703        {
24704          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength",
24705          "text": " <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
24706        },
24707        {
24708          "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commonparent",
24709          "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>"
24710        }
24711      ]
24712    },
24713    "vkCmdBeginTransformFeedbackEXT": {
24714      "(VK_EXT_transform_feedback)": [
24715        {
24716          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-transformFeedback-02366",
24717          "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
24718        },
24719        {
24720          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02367",
24721          "text": " Transform feedback <strong class=\"purple\">must</strong> not be active"
24722        },
24723        {
24724          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02368",
24725          "text": " <code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
24726        },
24727        {
24728          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02369",
24729          "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>"
24730        },
24731        {
24732          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-counterBufferCount-02607",
24733          "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>"
24734        },
24735        {
24736          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-02370",
24737          "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"
24738        },
24739        {
24740          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffer-02371",
24741          "text": " If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>"
24742        },
24743        {
24744          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffers-02372",
24745          "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>"
24746        },
24747        {
24748          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-04128",
24749          "text": " The last vertex processing stage of the bound graphics pipeline <strong class=\"purple\">must</strong> have been declared with the <code>Xfb</code> execution mode"
24750        },
24751        {
24752          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter",
24753          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
24754        },
24755        {
24756          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-parameter",
24757          "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"
24758        },
24759        {
24760          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-recording",
24761          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
24762        },
24763        {
24764          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-cmdpool",
24765          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
24766        },
24767        {
24768          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-renderpass",
24769          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
24770        },
24771        {
24772          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commonparent",
24773          "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>"
24774        }
24775      ],
24776      "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
24777        {
24778          "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02373",
24779          "text": " Transform feedback <strong class=\"purple\">must</strong> not be made active in a render pass instance with multiview enabled"
24780        }
24781      ]
24782    },
24783    "vkCmdEndTransformFeedbackEXT": {
24784      "(VK_EXT_transform_feedback)": [
24785        {
24786          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374",
24787          "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
24788        },
24789        {
24790          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-None-02375",
24791          "text": " Transform feedback <strong class=\"purple\">must</strong> be active"
24792        },
24793        {
24794          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376",
24795          "text": " <code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
24796        },
24797        {
24798          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377",
24799          "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>"
24800        },
24801        {
24802          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-counterBufferCount-02608",
24803          "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>"
24804        },
24805        {
24806          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378",
24807          "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"
24808        },
24809        {
24810          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379",
24811          "text": " If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>"
24812        },
24813        {
24814          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380",
24815          "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>"
24816        },
24817        {
24818          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter",
24819          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
24820        },
24821        {
24822          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-parameter",
24823          "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"
24824        },
24825        {
24826          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-recording",
24827          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
24828        },
24829        {
24830          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-cmdpool",
24831          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
24832        },
24833        {
24834          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-renderpass",
24835          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
24836        },
24837        {
24838          "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commonparent",
24839          "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>"
24840        }
24841      ]
24842    },
24843    "VkPipelineViewportSwizzleStateCreateInfoNV": {
24844      "(VK_NV_viewport_swizzle)": [
24845        {
24846          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-01215",
24847          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> set in <code>VkPipelineViewportStateCreateInfo</code>"
24848        },
24849        {
24850          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-sType-sType",
24851          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV</code>"
24852        },
24853        {
24854          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-flags-zerobitmask",
24855          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24856        },
24857        {
24858          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-pViewportSwizzles-parameter",
24859          "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"
24860        },
24861        {
24862          "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-arraylength",
24863          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
24864        }
24865      ]
24866    },
24867    "VkViewportSwizzleNV": {
24868      "(VK_NV_viewport_swizzle)": [
24869        {
24870          "vuid": "VUID-VkViewportSwizzleNV-x-parameter",
24871          "text": " <code>x</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
24872        },
24873        {
24874          "vuid": "VUID-VkViewportSwizzleNV-y-parameter",
24875          "text": " <code>y</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
24876        },
24877        {
24878          "vuid": "VUID-VkViewportSwizzleNV-z-parameter",
24879          "text": " <code>z</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
24880        },
24881        {
24882          "vuid": "VUID-VkViewportSwizzleNV-w-parameter",
24883          "text": " <code>w</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
24884        }
24885      ]
24886    },
24887    "VkPipelineViewportWScalingStateCreateInfoNV": {
24888      "(VK_NV_clip_space_w_scaling)": [
24889        {
24890          "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-sType-sType",
24891          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV</code>"
24892        },
24893        {
24894          "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-viewportCount-arraylength",
24895          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
24896        }
24897      ]
24898    },
24899    "vkCmdSetViewportWScalingNV": {
24900      "(VK_NV_clip_space_w_scaling)": [
24901        {
24902          "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01323",
24903          "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxViewports</code>"
24904        },
24905        {
24906          "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01324",
24907          "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"
24908        },
24909        {
24910          "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter",
24911          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
24912        },
24913        {
24914          "vuid": "VUID-vkCmdSetViewportWScalingNV-pViewportWScalings-parameter",
24915          "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"
24916        },
24917        {
24918          "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-recording",
24919          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
24920        },
24921        {
24922          "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-cmdpool",
24923          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
24924        },
24925        {
24926          "vuid": "VUID-vkCmdSetViewportWScalingNV-viewportCount-arraylength",
24927          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
24928        }
24929      ]
24930    },
24931    "VkPipelineViewportStateCreateInfo": {
24932      "core": [
24933        {
24934          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216",
24935          "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> not be greater than <code>1</code>"
24936        },
24937        {
24938          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217",
24939          "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>scissorCount</code> <strong class=\"purple\">must</strong> not be greater than <code>1</code>"
24940        },
24941        {
24942          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218",
24943          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
24944        },
24945        {
24946          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219",
24947          "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
24948        },
24949        {
24950          "vuid": "VUID-VkPipelineViewportStateCreateInfo-x-02821",
24951          "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>"
24952        },
24953        {
24954          "vuid": "VUID-VkPipelineViewportStateCreateInfo-offset-02822",
24955          "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>"
24956        },
24957        {
24958          "vuid": "VUID-VkPipelineViewportStateCreateInfo-offset-02823",
24959          "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>"
24960        },
24961        {
24962          "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-sType",
24963          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO</code>"
24964        },
24965        {
24966          "vuid": "VUID-VkPipelineViewportStateCreateInfo-pNext-pNext",
24967          "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>"
24968        },
24969        {
24970          "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-unique",
24971          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
24972        },
24973        {
24974          "vuid": "VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask",
24975          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24976        }
24977      ],
24978      "!(VK_EXT_extended_dynamic_state)": [
24979        {
24980          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01220",
24981          "text": " <code>scissorCount</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be identical"
24982        },
24983        {
24984          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-arraylength",
24985          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
24986        },
24987        {
24988          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-arraylength",
24989          "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
24990        }
24991      ],
24992      "(VK_EXT_extended_dynamic_state)": [
24993        {
24994          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-04134",
24995          "text": " If the graphics pipeline is being created without <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> set then <code>scissorCount</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be identical"
24996        },
24997        {
24998          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-04135",
24999          "text": " If the graphics pipeline is being created with <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> set then <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise it <strong class=\"purple\">must</strong> be greater than <code>0</code>"
25000        },
25001        {
25002          "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-04136",
25003          "text": " If the graphics pipeline is being created with <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> set then <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise it <strong class=\"purple\">must</strong> be greater than <code>0</code>"
25004        }
25005      ],
25006      "(VK_NV_clip_space_w_scaling)": [
25007        {
25008          "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726",
25009          "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 greater than or equal to <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>::<code>viewportCount</code>"
25010        }
25011      ]
25012    },
25013    "vkCmdSetViewportWithCountEXT": {
25014      "(VK_EXT_extended_dynamic_state)": [
25015        {
25016          "vuid": "VUID-vkCmdSetViewportWithCountEXT-None-03393",
25017          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
25018        },
25019        {
25020          "vuid": "VUID-vkCmdSetViewportWithCountEXT-viewportCount-03394",
25021          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
25022        },
25023        {
25024          "vuid": "VUID-vkCmdSetViewportWithCountEXT-viewportCount-03395",
25025          "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>"
25026        },
25027        {
25028          "vuid": "VUID-vkCmdSetViewportWithCountEXT-commandBuffer-parameter",
25029          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
25030        },
25031        {
25032          "vuid": "VUID-vkCmdSetViewportWithCountEXT-pViewports-parameter",
25033          "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"
25034        },
25035        {
25036          "vuid": "VUID-vkCmdSetViewportWithCountEXT-commandBuffer-recording",
25037          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25038        },
25039        {
25040          "vuid": "VUID-vkCmdSetViewportWithCountEXT-commandBuffer-cmdpool",
25041          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
25042        },
25043        {
25044          "vuid": "VUID-vkCmdSetViewportWithCountEXT-viewportCount-arraylength",
25045          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
25046        }
25047      ]
25048    },
25049    "vkCmdSetScissorWithCountEXT": {
25050      "(VK_EXT_extended_dynamic_state)": [
25051        {
25052          "vuid": "VUID-vkCmdSetScissorWithCountEXT-None-03396",
25053          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
25054        },
25055        {
25056          "vuid": "VUID-vkCmdSetScissorWithCountEXT-scissorCount-03397",
25057          "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
25058        },
25059        {
25060          "vuid": "VUID-vkCmdSetScissorWithCountEXT-scissorCount-03398",
25061          "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>"
25062        },
25063        {
25064          "vuid": "VUID-vkCmdSetScissorWithCountEXT-x-03399",
25065          "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>"
25066        },
25067        {
25068          "vuid": "VUID-vkCmdSetScissorWithCountEXT-offset-03400",
25069          "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>"
25070        },
25071        {
25072          "vuid": "VUID-vkCmdSetScissorWithCountEXT-offset-03401",
25073          "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>"
25074        },
25075        {
25076          "vuid": "VUID-vkCmdSetScissorWithCountEXT-commandBuffer-parameter",
25077          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
25078        },
25079        {
25080          "vuid": "VUID-vkCmdSetScissorWithCountEXT-pScissors-parameter",
25081          "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"
25082        },
25083        {
25084          "vuid": "VUID-vkCmdSetScissorWithCountEXT-commandBuffer-recording",
25085          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25086        },
25087        {
25088          "vuid": "VUID-vkCmdSetScissorWithCountEXT-commandBuffer-cmdpool",
25089          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
25090        },
25091        {
25092          "vuid": "VUID-vkCmdSetScissorWithCountEXT-scissorCount-arraylength",
25093          "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
25094        }
25095      ]
25096    },
25097    "vkCmdSetViewport": {
25098      "core": [
25099        {
25100          "vuid": "VUID-vkCmdSetViewport-firstViewport-01222",
25101          "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
25102        },
25103        {
25104          "vuid": "VUID-vkCmdSetViewport-firstViewport-01223",
25105          "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"
25106        },
25107        {
25108          "vuid": "VUID-vkCmdSetViewport-firstViewport-01224",
25109          "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>"
25110        },
25111        {
25112          "vuid": "VUID-vkCmdSetViewport-viewportCount-01225",
25113          "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>"
25114        },
25115        {
25116          "vuid": "VUID-vkCmdSetViewport-commandBuffer-parameter",
25117          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
25118        },
25119        {
25120          "vuid": "VUID-vkCmdSetViewport-pViewports-parameter",
25121          "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"
25122        },
25123        {
25124          "vuid": "VUID-vkCmdSetViewport-commandBuffer-recording",
25125          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25126        },
25127        {
25128          "vuid": "VUID-vkCmdSetViewport-commandBuffer-cmdpool",
25129          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
25130        },
25131        {
25132          "vuid": "VUID-vkCmdSetViewport-viewportCount-arraylength",
25133          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
25134        }
25135      ]
25136    },
25137    "VkViewport": {
25138      "core": [
25139        {
25140          "vuid": "VUID-VkViewport-width-01770",
25141          "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>"
25142        },
25143        {
25144          "vuid": "VUID-VkViewport-width-01771",
25145          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[0]"
25146        },
25147        {
25148          "vuid": "VUID-VkViewport-height-01773",
25149          "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]"
25150        },
25151        {
25152          "vuid": "VUID-VkViewport-x-01774",
25153          "text": " <code>x</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]"
25154        },
25155        {
25156          "vuid": "VUID-VkViewport-x-01232",
25157          "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]"
25158        },
25159        {
25160          "vuid": "VUID-VkViewport-y-01775",
25161          "text": " <code>y</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]"
25162        },
25163        {
25164          "vuid": "VUID-VkViewport-y-01233",
25165          "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]"
25166        }
25167      ],
25168      "!(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
25169        {
25170          "vuid": "VUID-VkViewport-height-01772",
25171          "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>"
25172        }
25173      ],
25174      "(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
25175        {
25176          "vuid": "VUID-VkViewport-y-01776",
25177          "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]"
25178        },
25179        {
25180          "vuid": "VUID-VkViewport-y-01777",
25181          "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]"
25182        }
25183      ],
25184      "(VK_EXT_depth_range_unrestricted)": [
25185        {
25186          "vuid": "VUID-VkViewport-minDepth-01234",
25187          "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"
25188        },
25189        {
25190          "vuid": "VUID-VkViewport-maxDepth-01235",
25191          "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"
25192        }
25193      ],
25194      "!(VK_EXT_depth_range_unrestricted)": [
25195        {
25196          "vuid": "VUID-VkViewport-minDepth-02540",
25197          "text": " <code>minDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
25198        },
25199        {
25200          "vuid": "VUID-VkViewport-maxDepth-02541",
25201          "text": " <code>maxDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
25202        }
25203      ]
25204    },
25205    "VkPipelineRasterizationStateCreateInfo": {
25206      "core": [
25207        {
25208          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782",
25209          "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>"
25210        },
25211        {
25212          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-sType",
25213          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO</code>"
25214        },
25215        {
25216          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-pNext-pNext",
25217          "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>"
25218        },
25219        {
25220          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-unique",
25221          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
25222        },
25223        {
25224          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask",
25225          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
25226        },
25227        {
25228          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter",
25229          "text": " <code>polygonMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPolygonMode\">VkPolygonMode</a> value"
25230        },
25231        {
25232          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter",
25233          "text": " <code>cullMode</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCullModeFlagBits\">VkCullModeFlagBits</a> values"
25234        },
25235        {
25236          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter",
25237          "text": " <code>frontFace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFrontFace\">VkFrontFace</a> value"
25238        }
25239      ],
25240      "!(VK_NV_fill_rectangle)": [
25241        {
25242          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01413",
25243          "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>"
25244        }
25245      ],
25246      "(VK_NV_fill_rectangle)": [
25247        {
25248          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507",
25249          "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>"
25250        },
25251        {
25252          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414",
25253          "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>"
25254        }
25255      ],
25256      "(VK_KHR_portability_subset)": [
25257        {
25258          "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-pointPolygons-04458",
25259          "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>pointPolygons</code> is <code>VK_FALSE</code>, and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <code>polygonMode</code> <strong class=\"purple\">must</strong> not be <code>VK_POLYGON_MODE_POINT</code>."
25260        }
25261      ]
25262    },
25263    "VkPipelineRasterizationDepthClipStateCreateInfoEXT": {
25264      "(VK_EXT_depth_clip_enable)": [
25265        {
25266          "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-sType-sType",
25267          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT</code>"
25268        },
25269        {
25270          "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-flags-zerobitmask",
25271          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
25272        }
25273      ]
25274    },
25275    "VkPipelineMultisampleStateCreateInfo": {
25276      "core": [
25277        {
25278          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784",
25279          "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>"
25280        },
25281        {
25282          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785",
25283          "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>"
25284        },
25285        {
25286          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786",
25287          "text": " <code>minSampleShading</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>"
25288        },
25289        {
25290          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-sType",
25291          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO</code>"
25292        },
25293        {
25294          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext",
25295          "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>"
25296        },
25297        {
25298          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-unique",
25299          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
25300        },
25301        {
25302          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask",
25303          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
25304        },
25305        {
25306          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter",
25307          "text": " <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
25308        },
25309        {
25310          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter",
25311          "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"
25312        }
25313      ],
25314      "(VK_NV_framebuffer_mixed_samples)": [
25315        {
25316          "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415",
25317          "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>"
25318        }
25319      ]
25320    },
25321    "VkPipelineRasterizationStateStreamCreateInfoEXT": {
25322      "(VK_EXT_transform_feedback)": [
25323        {
25324          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324",
25325          "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>geometryStreams</code> <strong class=\"purple\">must</strong> be enabled"
25326        },
25327        {
25328          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02325",
25329          "text": " <code>rasterizationStream</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>::<code>maxTransformFeedbackStreams</code>"
25330        },
25331        {
25332          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02326",
25333          "text": " <code>rasterizationStream</code> <strong class=\"purple\">must</strong> be zero if <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackRasterizationStreamSelect</code> is <code>VK_FALSE</code>"
25334        },
25335        {
25336          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-sType-sType",
25337          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT</code>"
25338        },
25339        {
25340          "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-flags-zerobitmask",
25341          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
25342        }
25343      ]
25344    },
25345    "VkPipelineRasterizationStateRasterizationOrderAMD": {
25346      "(VK_AMD_rasterization_order)": [
25347        {
25348          "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-sType-sType",
25349          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD</code>"
25350        },
25351        {
25352          "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-rasterizationOrder-parameter",
25353          "text": " <code>rasterizationOrder</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRasterizationOrderAMD\">VkRasterizationOrderAMD</a> value"
25354        }
25355      ]
25356    },
25357    "VkPipelineSampleLocationsStateCreateInfoEXT": {
25358      "(VK_EXT_sample_locations)": [
25359        {
25360          "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sType-sType",
25361          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT</code>"
25362        },
25363        {
25364          "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sampleLocationsInfo-parameter",
25365          "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure"
25366        }
25367      ]
25368    },
25369    "VkSampleLocationsInfoEXT": {
25370      "(VK_EXT_sample_locations)": [
25371        {
25372          "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-01526",
25373          "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>"
25374        },
25375        {
25376          "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-01527",
25377          "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>"
25378        },
25379        {
25380          "vuid": "VUID-VkSampleLocationsInfoEXT-sType-sType",
25381          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT</code>"
25382        },
25383        {
25384          "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-parameter",
25385          "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"
25386        },
25387        {
25388          "vuid": "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter",
25389          "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"
25390        }
25391      ]
25392    },
25393    "vkCmdSetSampleLocationsEXT": {
25394      "(VK_EXT_sample_locations)": [
25395        {
25396          "vuid": "VUID-vkCmdSetSampleLocationsEXT-sampleLocationsPerPixel-01529",
25397          "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"
25398        },
25399        {
25400          "vuid": "VUID-vkCmdSetSampleLocationsEXT-variableSampleLocations-01530",
25401          "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>"
25402        },
25403        {
25404          "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter",
25405          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
25406        },
25407        {
25408          "vuid": "VUID-vkCmdSetSampleLocationsEXT-pSampleLocationsInfo-parameter",
25409          "text": " <code>pSampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure"
25410        },
25411        {
25412          "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-recording",
25413          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25414        },
25415        {
25416          "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-cmdpool",
25417          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
25418        }
25419      ]
25420    },
25421    "vkGetPhysicalDeviceFragmentShadingRatesKHR": {
25422      "(VK_KHR_fragment_shading_rate)": [
25423        {
25424          "vuid": "VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-physicalDevice-parameter",
25425          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
25426        },
25427        {
25428          "vuid": "VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-pFragmentShadingRateCount-parameter",
25429          "text": " <code>pFragmentShadingRateCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
25430        },
25431        {
25432          "vuid": "VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-pFragmentShadingRates-parameter",
25433          "text": " If the value referenced by <code>pFragmentShadingRateCount</code> is not <code>0</code>, and <code>pFragmentShadingRates</code> is not <code>NULL</code>, <code>pFragmentShadingRates</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pFragmentShadingRateCount</code> <a href=\"#VkPhysicalDeviceFragmentShadingRateKHR\">VkPhysicalDeviceFragmentShadingRateKHR</a> structures"
25434        }
25435      ]
25436    },
25437    "VkPhysicalDeviceFragmentShadingRateKHR": {
25438      "(VK_KHR_fragment_shading_rate)": [
25439        {
25440          "vuid": "VUID-VkPhysicalDeviceFragmentShadingRateKHR-sType-sType",
25441          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR</code>"
25442        },
25443        {
25444          "vuid": "VUID-VkPhysicalDeviceFragmentShadingRateKHR-pNext-pNext",
25445          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
25446        }
25447      ]
25448    },
25449    "VkPipelineFragmentShadingRateStateCreateInfoKHR": {
25450      "(VK_KHR_fragment_shading_rate)": [
25451        {
25452          "vuid": "VUID-VkPipelineFragmentShadingRateStateCreateInfoKHR-sType-sType",
25453          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR</code>"
25454        },
25455        {
25456          "vuid": "VUID-VkPipelineFragmentShadingRateStateCreateInfoKHR-combinerOps-parameter",
25457          "text": " Any given element of <code>combinerOps</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFragmentShadingRateCombinerOpKHR\">VkFragmentShadingRateCombinerOpKHR</a> value"
25458        }
25459      ]
25460    },
25461    "vkCmdSetFragmentShadingRateKHR": {
25462      "(VK_KHR_fragment_shading_rate)": [
25463        {
25464          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04507",
25465          "text": " If <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> is not enabled, <code>pFragmentSize</code>-&gt;<code>width</code> <strong class=\"purple\">must</strong> be <code>1</code>"
25466        },
25467        {
25468          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04508",
25469          "text": " If <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> is not enabled, <code>pFragmentSize</code>-&gt;<code>height</code> <strong class=\"purple\">must</strong> be <code>1</code>"
25470        },
25471        {
25472          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04509",
25473          "text": " One of <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a>, <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a>, or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> be enabled"
25474        },
25475        {
25476          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-primitiveFragmentShadingRate-04510",
25477          "text": " If the <a href=\"#feature-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code> feature</a> is not enabled, <code>combinerOps</code>[0] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>"
25478        },
25479        {
25480          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-attachmentFragmentShadingRate-04511",
25481          "text": " If the <a href=\"#feature-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code> feature</a> is not enabled, <code>combinerOps</code>[1] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>"
25482        },
25483        {
25484          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-fragmentSizeNonTrivialCombinerOps-04512",
25485          "text": " If the <a href=\"#limits-fragmentShadingRateNonTrivialCombinerOps\"><code>fragmentSizeNonTrivialCombinerOps</code></a> limit is not supported, elements of <code>combinerOps</code> <strong class=\"purple\">must</strong> be either <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code> or <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR</code>"
25486        },
25487        {
25488          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04513",
25489          "text": " <code>pFragmentSize</code>-&gt;<code>width</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>1</code>"
25490        },
25491        {
25492          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04514",
25493          "text": " <code>pFragmentSize</code>-&gt;<code>height</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>1</code>"
25494        },
25495        {
25496          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04515",
25497          "text": " <code>pFragmentSize</code>-&gt;<code>width</code> <strong class=\"purple\">must</strong> be a power-of-two value"
25498        },
25499        {
25500          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04516",
25501          "text": " <code>pFragmentSize</code>-&gt;<code>height</code> <strong class=\"purple\">must</strong> be a power-of-two value"
25502        },
25503        {
25504          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04517",
25505          "text": " <code>pFragmentSize</code>-&gt;<code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>4</code>"
25506        },
25507        {
25508          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04518",
25509          "text": " <code>pFragmentSize</code>-&gt;<code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>4</code>"
25510        },
25511        {
25512          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-parameter",
25513          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
25514        },
25515        {
25516          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-parameter",
25517          "text": " <code>pFragmentSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkExtent2D\">VkExtent2D</a> structure"
25518        },
25519        {
25520          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-combinerOps-parameter",
25521          "text": " Any given element of <code>combinerOps</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFragmentShadingRateCombinerOpKHR\">VkFragmentShadingRateCombinerOpKHR</a> value"
25522        },
25523        {
25524          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-recording",
25525          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25526        },
25527        {
25528          "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-cmdpool",
25529          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
25530        }
25531      ]
25532    },
25533    "VkPipelineViewportShadingRateImageStateCreateInfoNV": {
25534      "(VK_NV_shading_rate_image)": [
25535        {
25536          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02054",
25537          "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>"
25538        },
25539        {
25540          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02055",
25541          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
25542        },
25543        {
25544          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-shadingRateImageEnable-02056",
25545          "text": " If <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater or equal to the <code>viewportCount</code> member of <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>"
25546        },
25547        {
25548          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-sType-sType",
25549          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV</code>"
25550        },
25551        {
25552          "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-arraylength",
25553          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
25554        }
25555      ]
25556    },
25557    "vkCmdBindShadingRateImageNV": {
25558      "(VK_NV_shading_rate_image)": [
25559        {
25560          "vuid": "VUID-vkCmdBindShadingRateImageNV-None-02058",
25561          "text": " The <a href=\"#features-shadingRateImage\">shading rate image</a> feature <strong class=\"purple\">must</strong> be enabled"
25562        },
25563        {
25564          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02059",
25565          "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>"
25566        },
25567        {
25568          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02060",
25569          "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>"
25570        },
25571        {
25572          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02061",
25573          "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>"
25574        },
25575        {
25576          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02062",
25577          "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"
25578        },
25579        {
25580          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-02063",
25581          "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>"
25582        },
25583        {
25584          "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter",
25585          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
25586        },
25587        {
25588          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-parameter",
25589          "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"
25590        },
25591        {
25592          "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-parameter",
25593          "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
25594        },
25595        {
25596          "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-recording",
25597          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25598        },
25599        {
25600          "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-cmdpool",
25601          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
25602        },
25603        {
25604          "vuid": "VUID-vkCmdBindShadingRateImageNV-commonparent",
25605          "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>"
25606        }
25607      ]
25608    },
25609    "vkCmdSetViewportShadingRatePaletteNV": {
25610      "(VK_NV_shading_rate_image)": [
25611        {
25612          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-None-02064",
25613          "text": " The <a href=\"#features-shadingRateImage\">shading rate image</a> feature <strong class=\"purple\">must</strong> be enabled"
25614        },
25615        {
25616          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02066",
25617          "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
25618        },
25619        {
25620          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02067",
25621          "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"
25622        },
25623        {
25624          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02068",
25625          "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>"
25626        },
25627        {
25628          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-02069",
25629          "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>"
25630        },
25631        {
25632          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter",
25633          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
25634        },
25635        {
25636          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-pShadingRatePalettes-parameter",
25637          "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"
25638        },
25639        {
25640          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-recording",
25641          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25642        },
25643        {
25644          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-cmdpool",
25645          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
25646        },
25647        {
25648          "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-arraylength",
25649          "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
25650        }
25651      ]
25652    },
25653    "VkShadingRatePaletteNV": {
25654      "(VK_NV_shading_rate_image)": [
25655        {
25656          "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-02071",
25657          "text": " <code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRatePaletteSize</code>, inclusive"
25658        },
25659        {
25660          "vuid": "VUID-VkShadingRatePaletteNV-pShadingRatePaletteEntries-parameter",
25661          "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"
25662        },
25663        {
25664          "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-arraylength",
25665          "text": " <code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
25666        }
25667      ]
25668    },
25669    "VkPipelineViewportCoarseSampleOrderStateCreateInfoNV": {
25670      "(VK_NV_shading_rate_image)": [
25671        {
25672          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-02072",
25673          "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>"
25674        },
25675        {
25676          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-02234",
25677          "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"
25678        },
25679        {
25680          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sType-sType",
25681          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV</code>"
25682        },
25683        {
25684          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-parameter",
25685          "text": " <code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value"
25686        },
25687        {
25688          "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-parameter",
25689          "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"
25690        }
25691      ]
25692    },
25693    "VkCoarseSampleOrderCustomNV": {
25694      "(VK_NV_shading_rate_image)": [
25695        {
25696          "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-02073",
25697          "text": " <code>shadingRate</code> <strong class=\"purple\">must</strong> be a shading rate that generates fragments with more than one pixel"
25698        },
25699        {
25700          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleCount-02074",
25701          "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>"
25702        },
25703        {
25704          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02075",
25705          "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>"
25706        },
25707        {
25708          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02076",
25709          "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be less than or equal to the value of <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRateMaxCoarseSamples</code>"
25710        },
25711        {
25712          "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-02077",
25713          "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>"
25714        },
25715        {
25716          "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-parameter",
25717          "text": " <code>shadingRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShadingRatePaletteEntryNV\">VkShadingRatePaletteEntryNV</a> value"
25718        },
25719        {
25720          "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-parameter",
25721          "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"
25722        },
25723        {
25724          "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-arraylength",
25725          "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
25726        }
25727      ]
25728    },
25729    "VkCoarseSampleLocationNV": {
25730      "(VK_NV_shading_rate_image)": [
25731        {
25732          "vuid": "VUID-VkCoarseSampleLocationNV-pixelX-02078",
25733          "text": " <code>pixelX</code> <strong class=\"purple\">must</strong> be less than the width (in pixels) of the fragment"
25734        },
25735        {
25736          "vuid": "VUID-VkCoarseSampleLocationNV-pixelY-02079",
25737          "text": " <code>pixelY</code> <strong class=\"purple\">must</strong> be less than the height (in pixels) of the fragment"
25738        },
25739        {
25740          "vuid": "VUID-VkCoarseSampleLocationNV-sample-02080",
25741          "text": " <code>sample</code> <strong class=\"purple\">must</strong> be less than the number of coverage samples in each pixel belonging to the fragment"
25742        }
25743      ]
25744    },
25745    "vkCmdSetCoarseSampleOrderNV": {
25746      "(VK_NV_shading_rate_image)": [
25747        {
25748          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-02081",
25749          "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>"
25750        },
25751        {
25752          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-02235",
25753          "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"
25754        },
25755        {
25756          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter",
25757          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
25758        },
25759        {
25760          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-parameter",
25761          "text": " <code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value"
25762        },
25763        {
25764          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-parameter",
25765          "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"
25766        },
25767        {
25768          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-recording",
25769          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25770        },
25771        {
25772          "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-cmdpool",
25773          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
25774        }
25775      ]
25776    },
25777    "VkPipelineRasterizationLineStateCreateInfoEXT": {
25778      "(VK_EXT_line_rasterization)": [
25779        {
25780          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02768",
25781          "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"
25782        },
25783        {
25784          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02769",
25785          "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"
25786        },
25787        {
25788          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02770",
25789          "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"
25790        },
25791        {
25792          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02771",
25793          "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"
25794        },
25795        {
25796          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02772",
25797          "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"
25798        },
25799        {
25800          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02773",
25801          "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"
25802        },
25803        {
25804          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02774",
25805          "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>"
25806        },
25807        {
25808          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-sType-sType",
25809          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT</code>"
25810        },
25811        {
25812          "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-parameter",
25813          "text": " <code>lineRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkLineRasterizationModeEXT\">VkLineRasterizationModeEXT</a> value"
25814        }
25815      ]
25816    },
25817    "vkCmdSetLineWidth": {
25818      "core": [
25819        {
25820          "vuid": "VUID-vkCmdSetLineWidth-lineWidth-00788",
25821          "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>"
25822        },
25823        {
25824          "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-parameter",
25825          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
25826        },
25827        {
25828          "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-recording",
25829          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25830        },
25831        {
25832          "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-cmdpool",
25833          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
25834        }
25835      ]
25836    },
25837    "vkCmdSetLineStippleEXT": {
25838      "(VK_EXT_line_rasterization)": [
25839        {
25840          "vuid": "VUID-vkCmdSetLineStippleEXT-lineStippleFactor-02776",
25841          "text": " <code>lineStippleFactor</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[1,256]</span>"
25842        },
25843        {
25844          "vuid": "VUID-vkCmdSetLineStippleEXT-commandBuffer-parameter",
25845          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
25846        },
25847        {
25848          "vuid": "VUID-vkCmdSetLineStippleEXT-commandBuffer-recording",
25849          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25850        },
25851        {
25852          "vuid": "VUID-vkCmdSetLineStippleEXT-commandBuffer-cmdpool",
25853          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
25854        }
25855      ]
25856    },
25857    "vkCmdSetFrontFaceEXT": {
25858      "(VK_EXT_extended_dynamic_state)": [
25859        {
25860          "vuid": "VUID-vkCmdSetFrontFaceEXT-None-03383",
25861          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
25862        },
25863        {
25864          "vuid": "VUID-vkCmdSetFrontFaceEXT-commandBuffer-parameter",
25865          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
25866        },
25867        {
25868          "vuid": "VUID-vkCmdSetFrontFaceEXT-frontFace-parameter",
25869          "text": " <code>frontFace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFrontFace\">VkFrontFace</a> value"
25870        },
25871        {
25872          "vuid": "VUID-vkCmdSetFrontFaceEXT-commandBuffer-recording",
25873          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25874        },
25875        {
25876          "vuid": "VUID-vkCmdSetFrontFaceEXT-commandBuffer-cmdpool",
25877          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
25878        }
25879      ]
25880    },
25881    "vkCmdSetCullModeEXT": {
25882      "(VK_EXT_extended_dynamic_state)": [
25883        {
25884          "vuid": "VUID-vkCmdSetCullModeEXT-None-03384",
25885          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
25886        },
25887        {
25888          "vuid": "VUID-vkCmdSetCullModeEXT-commandBuffer-parameter",
25889          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
25890        },
25891        {
25892          "vuid": "VUID-vkCmdSetCullModeEXT-cullMode-parameter",
25893          "text": " <code>cullMode</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCullModeFlagBits\">VkCullModeFlagBits</a> values"
25894        },
25895        {
25896          "vuid": "VUID-vkCmdSetCullModeEXT-commandBuffer-recording",
25897          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25898        },
25899        {
25900          "vuid": "VUID-vkCmdSetCullModeEXT-commandBuffer-cmdpool",
25901          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
25902        }
25903      ]
25904    },
25905    "vkCmdSetDepthBias": {
25906      "core": [
25907        {
25908          "vuid": "VUID-vkCmdSetDepthBias-depthBiasClamp-00790",
25909          "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>"
25910        },
25911        {
25912          "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-parameter",
25913          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
25914        },
25915        {
25916          "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-recording",
25917          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25918        },
25919        {
25920          "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-cmdpool",
25921          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
25922        }
25923      ]
25924    },
25925    "VkPipelineRasterizationConservativeStateCreateInfoEXT": {
25926      "(VK_EXT_conservative_rasterization)": [
25927        {
25928          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-extraPrimitiveOverestimationSize-01769",
25929          "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"
25930        },
25931        {
25932          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-sType-sType",
25933          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT</code>"
25934        },
25935        {
25936          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-flags-zerobitmask",
25937          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
25938        },
25939        {
25940          "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-conservativeRasterizationMode-parameter",
25941          "text": " <code>conservativeRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkConservativeRasterizationModeEXT\">VkConservativeRasterizationModeEXT</a> value"
25942        }
25943      ]
25944    },
25945    "VkPipelineDiscardRectangleStateCreateInfoEXT": {
25946      "(VK_EXT_discard_rectangles)": [
25947        {
25948          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleCount-00582",
25949          "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDiscardRectanglePropertiesEXT</code>::<code>maxDiscardRectangles</code>"
25950        },
25951        {
25952          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-sType-sType",
25953          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT</code>"
25954        },
25955        {
25956          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-flags-zerobitmask",
25957          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
25958        },
25959        {
25960          "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleMode-parameter",
25961          "text": " <code>discardRectangleMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDiscardRectangleModeEXT\">VkDiscardRectangleModeEXT</a> value"
25962        }
25963      ]
25964    },
25965    "vkCmdSetDiscardRectangleEXT": {
25966      "(VK_EXT_discard_rectangles)": [
25967        {
25968          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-firstDiscardRectangle-00585",
25969          "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>"
25970        },
25971        {
25972          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-x-00587",
25973          "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>"
25974        },
25975        {
25976          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00588",
25977          "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"
25978        },
25979        {
25980          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00589",
25981          "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"
25982        },
25983        {
25984          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter",
25985          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
25986        },
25987        {
25988          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-pDiscardRectangles-parameter",
25989          "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"
25990        },
25991        {
25992          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-recording",
25993          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25994        },
25995        {
25996          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-cmdpool",
25997          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
25998        },
25999        {
26000          "vuid": "VUID-vkCmdSetDiscardRectangleEXT-discardRectangleCount-arraylength",
26001          "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
26002        }
26003      ]
26004    },
26005    "vkCmdSetScissor": {
26006      "core": [
26007        {
26008          "vuid": "VUID-vkCmdSetScissor-firstScissor-00591",
26009          "text": " <code>firstScissor</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
26010        },
26011        {
26012          "vuid": "VUID-vkCmdSetScissor-firstScissor-00592",
26013          "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"
26014        },
26015        {
26016          "vuid": "VUID-vkCmdSetScissor-firstScissor-00593",
26017          "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>"
26018        },
26019        {
26020          "vuid": "VUID-vkCmdSetScissor-scissorCount-00594",
26021          "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>"
26022        },
26023        {
26024          "vuid": "VUID-vkCmdSetScissor-x-00595",
26025          "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>"
26026        },
26027        {
26028          "vuid": "VUID-vkCmdSetScissor-offset-00596",
26029          "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>"
26030        },
26031        {
26032          "vuid": "VUID-vkCmdSetScissor-offset-00597",
26033          "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>"
26034        },
26035        {
26036          "vuid": "VUID-vkCmdSetScissor-commandBuffer-parameter",
26037          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26038        },
26039        {
26040          "vuid": "VUID-vkCmdSetScissor-pScissors-parameter",
26041          "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"
26042        },
26043        {
26044          "vuid": "VUID-vkCmdSetScissor-commandBuffer-recording",
26045          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26046        },
26047        {
26048          "vuid": "VUID-vkCmdSetScissor-commandBuffer-cmdpool",
26049          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
26050        },
26051        {
26052          "vuid": "VUID-vkCmdSetScissor-scissorCount-arraylength",
26053          "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
26054        }
26055      ]
26056    },
26057    "VkPipelineViewportExclusiveScissorStateCreateInfoNV": {
26058      "(VK_NV_scissor_exclusive)": [
26059        {
26060          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027",
26061          "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>"
26062        },
26063        {
26064          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028",
26065          "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
26066        },
26067        {
26068          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02029",
26069          "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or greater than or equal to the <code>viewportCount</code> member of <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>"
26070        },
26071        {
26072          "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType",
26073          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV</code>"
26074        }
26075      ]
26076    },
26077    "vkCmdSetExclusiveScissorNV": {
26078      "(VK_NV_scissor_exclusive)": [
26079        {
26080          "vuid": "VUID-vkCmdSetExclusiveScissorNV-None-02031",
26081          "text": " The <a href=\"#features-exclusiveScissor\">exclusive scissor</a> feature <strong class=\"purple\">must</strong> be enabled"
26082        },
26083        {
26084          "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02033",
26085          "text": " <code>firstExclusiveScissor</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
26086        },
26087        {
26088          "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02034",
26089          "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"
26090        },
26091        {
26092          "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02035",
26093          "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>"
26094        },
26095        {
26096          "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-02036",
26097          "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>"
26098        },
26099        {
26100          "vuid": "VUID-vkCmdSetExclusiveScissorNV-x-02037",
26101          "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>"
26102        },
26103        {
26104          "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02038",
26105          "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"
26106        },
26107        {
26108          "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02039",
26109          "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"
26110        },
26111        {
26112          "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter",
26113          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26114        },
26115        {
26116          "vuid": "VUID-vkCmdSetExclusiveScissorNV-pExclusiveScissors-parameter",
26117          "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"
26118        },
26119        {
26120          "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-recording",
26121          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26122        },
26123        {
26124          "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-cmdpool",
26125          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
26126        },
26127        {
26128          "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-arraylength",
26129          "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
26130        }
26131      ]
26132    },
26133    "VkPipelineDepthStencilStateCreateInfo": {
26134      "core": [
26135        {
26136          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598",
26137          "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>"
26138        },
26139        {
26140          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType",
26141          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO</code>"
26142        },
26143        {
26144          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext",
26145          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
26146        },
26147        {
26148          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-flags-zerobitmask",
26149          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
26150        },
26151        {
26152          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthCompareOp-parameter",
26153          "text": " <code>depthCompareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
26154        },
26155        {
26156          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-front-parameter",
26157          "text": " <code>front</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOpState\">VkStencilOpState</a> structure"
26158        },
26159        {
26160          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-back-parameter",
26161          "text": " <code>back</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOpState\">VkStencilOpState</a> structure"
26162        }
26163      ],
26164      "(VK_KHR_portability_subset)": [
26165        {
26166          "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-separateStencilMaskRef-04453",
26167          "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>separateStencilMaskRef</code> is <code>VK_FALSE</code>, and the value of <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a>::<code>stencilTestEnable</code> is <code>VK_TRUE</code>, and the value of <a href=\"#VkPipelineRasterizationStateCreateInfo\">VkPipelineRasterizationStateCreateInfo</a>::<code>cullMode</code> is <code>VK_CULL_MODE_NONE</code>, the value of <code>reference</code> in each of the <a href=\"#VkStencilOpState\">VkStencilOpState</a> structs in <code>front</code> and <code>back</code> <strong class=\"purple\">must</strong> be the same."
26168        }
26169      ]
26170    },
26171    "vkCmdSetDepthBoundsTestEnableEXT": {
26172      "(VK_EXT_extended_dynamic_state)": [
26173        {
26174          "vuid": "VUID-vkCmdSetDepthBoundsTestEnableEXT-None-03349",
26175          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
26176        },
26177        {
26178          "vuid": "VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-parameter",
26179          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26180        },
26181        {
26182          "vuid": "VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-recording",
26183          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26184        },
26185        {
26186          "vuid": "VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-cmdpool",
26187          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
26188        }
26189      ]
26190    },
26191    "vkCmdSetDepthBounds": {
26192      "(VK_EXT_depth_range_unrestricted)": [
26193        {
26194          "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-00600",
26195          "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"
26196        },
26197        {
26198          "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-00601",
26199          "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"
26200        }
26201      ],
26202      "!(VK_EXT_depth_range_unrestricted)": [
26203        {
26204          "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-02508",
26205          "text": " <code>minDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
26206        },
26207        {
26208          "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-02509",
26209          "text": " <code>maxDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
26210        }
26211      ],
26212      "core": [
26213        {
26214          "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-parameter",
26215          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26216        },
26217        {
26218          "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-recording",
26219          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26220        },
26221        {
26222          "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-cmdpool",
26223          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
26224        }
26225      ]
26226    },
26227    "vkCmdSetStencilTestEnableEXT": {
26228      "(VK_EXT_extended_dynamic_state)": [
26229        {
26230          "vuid": "VUID-vkCmdSetStencilTestEnableEXT-None-03350",
26231          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
26232        },
26233        {
26234          "vuid": "VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-parameter",
26235          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26236        },
26237        {
26238          "vuid": "VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-recording",
26239          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26240        },
26241        {
26242          "vuid": "VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-cmdpool",
26243          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
26244        }
26245      ]
26246    },
26247    "vkCmdSetStencilOpEXT": {
26248      "(VK_EXT_extended_dynamic_state)": [
26249        {
26250          "vuid": "VUID-vkCmdSetStencilOpEXT-None-03351",
26251          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
26252        },
26253        {
26254          "vuid": "VUID-vkCmdSetStencilOpEXT-commandBuffer-parameter",
26255          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26256        },
26257        {
26258          "vuid": "VUID-vkCmdSetStencilOpEXT-faceMask-parameter",
26259          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
26260        },
26261        {
26262          "vuid": "VUID-vkCmdSetStencilOpEXT-faceMask-requiredbitmask",
26263          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
26264        },
26265        {
26266          "vuid": "VUID-vkCmdSetStencilOpEXT-failOp-parameter",
26267          "text": " <code>failOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
26268        },
26269        {
26270          "vuid": "VUID-vkCmdSetStencilOpEXT-passOp-parameter",
26271          "text": " <code>passOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
26272        },
26273        {
26274          "vuid": "VUID-vkCmdSetStencilOpEXT-depthFailOp-parameter",
26275          "text": " <code>depthFailOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
26276        },
26277        {
26278          "vuid": "VUID-vkCmdSetStencilOpEXT-compareOp-parameter",
26279          "text": " <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
26280        },
26281        {
26282          "vuid": "VUID-vkCmdSetStencilOpEXT-commandBuffer-recording",
26283          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26284        },
26285        {
26286          "vuid": "VUID-vkCmdSetStencilOpEXT-commandBuffer-cmdpool",
26287          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
26288        }
26289      ]
26290    },
26291    "VkStencilOpState": {
26292      "core": [
26293        {
26294          "vuid": "VUID-VkStencilOpState-failOp-parameter",
26295          "text": " <code>failOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
26296        },
26297        {
26298          "vuid": "VUID-VkStencilOpState-passOp-parameter",
26299          "text": " <code>passOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
26300        },
26301        {
26302          "vuid": "VUID-VkStencilOpState-depthFailOp-parameter",
26303          "text": " <code>depthFailOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
26304        },
26305        {
26306          "vuid": "VUID-VkStencilOpState-compareOp-parameter",
26307          "text": " <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
26308        }
26309      ]
26310    },
26311    "vkCmdSetStencilCompareMask": {
26312      "core": [
26313        {
26314          "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter",
26315          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26316        },
26317        {
26318          "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-parameter",
26319          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
26320        },
26321        {
26322          "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask",
26323          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
26324        },
26325        {
26326          "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-recording",
26327          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26328        },
26329        {
26330          "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-cmdpool",
26331          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
26332        }
26333      ]
26334    },
26335    "vkCmdSetStencilWriteMask": {
26336      "core": [
26337        {
26338          "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter",
26339          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26340        },
26341        {
26342          "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-parameter",
26343          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
26344        },
26345        {
26346          "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask",
26347          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
26348        },
26349        {
26350          "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-recording",
26351          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26352        },
26353        {
26354          "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-cmdpool",
26355          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
26356        }
26357      ]
26358    },
26359    "vkCmdSetStencilReference": {
26360      "core": [
26361        {
26362          "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-parameter",
26363          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26364        },
26365        {
26366          "vuid": "VUID-vkCmdSetStencilReference-faceMask-parameter",
26367          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
26368        },
26369        {
26370          "vuid": "VUID-vkCmdSetStencilReference-faceMask-requiredbitmask",
26371          "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
26372        },
26373        {
26374          "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-recording",
26375          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26376        },
26377        {
26378          "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-cmdpool",
26379          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
26380        }
26381      ]
26382    },
26383    "vkCmdSetDepthTestEnableEXT": {
26384      "(VK_EXT_extended_dynamic_state)": [
26385        {
26386          "vuid": "VUID-vkCmdSetDepthTestEnableEXT-None-03352",
26387          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
26388        },
26389        {
26390          "vuid": "VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-parameter",
26391          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26392        },
26393        {
26394          "vuid": "VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-recording",
26395          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26396        },
26397        {
26398          "vuid": "VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-cmdpool",
26399          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
26400        }
26401      ]
26402    },
26403    "vkCmdSetDepthCompareOpEXT": {
26404      "(VK_EXT_extended_dynamic_state)": [
26405        {
26406          "vuid": "VUID-vkCmdSetDepthCompareOpEXT-None-03353",
26407          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
26408        },
26409        {
26410          "vuid": "VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-parameter",
26411          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26412        },
26413        {
26414          "vuid": "VUID-vkCmdSetDepthCompareOpEXT-depthCompareOp-parameter",
26415          "text": " <code>depthCompareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
26416        },
26417        {
26418          "vuid": "VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-recording",
26419          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26420        },
26421        {
26422          "vuid": "VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-cmdpool",
26423          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
26424        }
26425      ]
26426    },
26427    "vkCmdSetDepthWriteEnableEXT": {
26428      "(VK_EXT_extended_dynamic_state)": [
26429        {
26430          "vuid": "VUID-vkCmdSetDepthWriteEnableEXT-None-03354",
26431          "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled"
26432        },
26433        {
26434          "vuid": "VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-parameter",
26435          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26436        },
26437        {
26438          "vuid": "VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-recording",
26439          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26440        },
26441        {
26442          "vuid": "VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-cmdpool",
26443          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
26444        }
26445      ]
26446    },
26447    "VkPipelineRepresentativeFragmentTestStateCreateInfoNV": {
26448      "(VK_NV_representative_fragment_test)": [
26449        {
26450          "vuid": "VUID-VkPipelineRepresentativeFragmentTestStateCreateInfoNV-sType-sType",
26451          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV</code>"
26452        }
26453      ]
26454    },
26455    "VkPipelineCoverageToColorStateCreateInfoNV": {
26456      "(VK_NV_fragment_coverage_to_color)": [
26457        {
26458          "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-coverageToColorEnable-01404",
26459          "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>"
26460        },
26461        {
26462          "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-sType-sType",
26463          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV</code>"
26464        },
26465        {
26466          "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-flags-zerobitmask",
26467          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
26468        }
26469      ]
26470    },
26471    "VkPipelineCoverageReductionStateCreateInfoNV": {
26472      "(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [
26473        {
26474          "vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-sType-sType",
26475          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV</code>"
26476        },
26477        {
26478          "vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-flags-zerobitmask",
26479          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
26480        },
26481        {
26482          "vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-coverageReductionMode-parameter",
26483          "text": " <code>coverageReductionMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageReductionModeNV\">VkCoverageReductionModeNV</a> value"
26484        }
26485      ]
26486    },
26487    "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV": {
26488      "(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [
26489        {
26490          "vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-physicalDevice-parameter",
26491          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
26492        },
26493        {
26494          "vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinationCount-parameter",
26495          "text": " <code>pCombinationCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
26496        },
26497        {
26498          "vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinations-parameter",
26499          "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"
26500        }
26501      ]
26502    },
26503    "VkFramebufferMixedSamplesCombinationNV": {
26504      "(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [
26505        {
26506          "vuid": "VUID-VkFramebufferMixedSamplesCombinationNV-sType-sType",
26507          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV</code>"
26508        },
26509        {
26510          "vuid": "VUID-VkFramebufferMixedSamplesCombinationNV-pNext-pNext",
26511          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
26512        }
26513      ]
26514    },
26515    "VkPipelineCoverageModulationStateCreateInfoNV": {
26516      "(VK_NV_framebuffer_mixed_samples)": [
26517        {
26518          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationTableEnable-01405",
26519          "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"
26520        },
26521        {
26522          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-sType-sType",
26523          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV</code>"
26524        },
26525        {
26526          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-flags-zerobitmask",
26527          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
26528        },
26529        {
26530          "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationMode-parameter",
26531          "text": " <code>coverageModulationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageModulationModeNV\">VkCoverageModulationModeNV</a> value"
26532        }
26533      ]
26534    },
26535    "VkPipelineColorBlendStateCreateInfo": {
26536      "core": [
26537        {
26538          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605",
26539          "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"
26540        },
26541        {
26542          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606",
26543          "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>"
26544        },
26545        {
26546          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00607",
26547          "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"
26548        },
26549        {
26550          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-sType-sType",
26551          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO</code>"
26552        },
26553        {
26554          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext",
26555          "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>"
26556        },
26557        {
26558          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-sType-unique",
26559          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
26560        },
26561        {
26562          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-flags-zerobitmask",
26563          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
26564        },
26565        {
26566          "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter",
26567          "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"
26568        }
26569      ]
26570    },
26571    "VkPipelineColorBlendAttachmentState": {
26572      "core": [
26573        {
26574          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608",
26575          "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>"
26576        },
26577        {
26578          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609",
26579          "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>"
26580        },
26581        {
26582          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610",
26583          "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>"
26584        },
26585        {
26586          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611",
26587          "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>"
26588        },
26589        {
26590          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter",
26591          "text": " <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
26592        },
26593        {
26594          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter",
26595          "text": " <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
26596        },
26597        {
26598          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter",
26599          "text": " <code>colorBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value"
26600        },
26601        {
26602          "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter",
26603          "text": " <code>srcAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
26604        },
26605        {
26606          "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter",
26607          "text": " <code>dstAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
26608        },
26609        {
26610          "vuid": "VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter",
26611          "text": " <code>alphaBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value"
26612        },
26613        {
26614          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter",
26615          "text": " <code>colorWriteMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkColorComponentFlagBits\">VkColorComponentFlagBits</a> values"
26616        }
26617      ],
26618      "(VK_EXT_blend_operation_advanced)": [
26619        {
26620          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406",
26621          "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>"
26622        },
26623        {
26624          "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407",
26625          "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"
26626        },
26627        {
26628          "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01408",
26629          "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"
26630        },
26631        {
26632          "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409",
26633          "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>"
26634        },
26635        {
26636          "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410",
26637          "text": " If <code>colorBlendOp</code> or <code>alphaBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <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"
26638        }
26639      ],
26640      "(VK_KHR_portability_subset)": [
26641        {
26642          "vuid": "VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04454",
26643          "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>constantAlphaColorBlendFactors</code> is <code>VK_FALSE</code>, <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code> or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>."
26644        },
26645        {
26646          "vuid": "VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04455",
26647          "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>constantAlphaColorBlendFactors</code> is <code>VK_FALSE</code>, <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code> or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>."
26648        }
26649      ]
26650    },
26651    "vkCmdSetBlendConstants": {
26652      "core": [
26653        {
26654          "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-parameter",
26655          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26656        },
26657        {
26658          "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-recording",
26659          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26660        },
26661        {
26662          "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-cmdpool",
26663          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
26664        }
26665      ]
26666    },
26667    "VkPipelineColorBlendAdvancedStateCreateInfoEXT": {
26668      "(VK_EXT_blend_operation_advanced)": [
26669        {
26670          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424",
26671          "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>"
26672        },
26673        {
26674          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425",
26675          "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>"
26676        },
26677        {
26678          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426",
26679          "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>"
26680        },
26681        {
26682          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-sType-sType",
26683          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT</code>"
26684        },
26685        {
26686          "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-parameter",
26687          "text": " <code>blendOverlap</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOverlapEXT\">VkBlendOverlapEXT</a> value"
26688        }
26689      ]
26690    },
26691    "vkCmdDispatch": {
26692      "core": [
26693        {
26694          "vuid": "VUID-vkCmdDispatch-magFilter-04553",
26695          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
26696        },
26697        {
26698          "vuid": "VUID-vkCmdDispatch-None-02691",
26699          "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>"
26700        },
26701        {
26702          "vuid": "VUID-vkCmdDispatch-None-02697",
26703          "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>"
26704        },
26705        {
26706          "vuid": "VUID-vkCmdDispatch-None-02698",
26707          "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>"
26708        },
26709        {
26710          "vuid": "VUID-vkCmdDispatch-None-02699",
26711          "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"
26712        },
26713        {
26714          "vuid": "VUID-vkCmdDispatch-None-02700",
26715          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
26716        },
26717        {
26718          "vuid": "VUID-vkCmdDispatch-commandBuffer-02701",
26719          "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"
26720        },
26721        {
26722          "vuid": "VUID-vkCmdDispatch-None-02859",
26723          "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"
26724        },
26725        {
26726          "vuid": "VUID-vkCmdDispatch-None-02702",
26727          "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"
26728        },
26729        {
26730          "vuid": "VUID-vkCmdDispatch-None-02703",
26731          "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"
26732        },
26733        {
26734          "vuid": "VUID-vkCmdDispatch-None-02704",
26735          "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"
26736        },
26737        {
26738          "vuid": "VUID-vkCmdDispatch-None-02705",
26739          "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"
26740        },
26741        {
26742          "vuid": "VUID-vkCmdDispatch-None-02706",
26743          "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"
26744        },
26745        {
26746          "vuid": "VUID-vkCmdDispatch-None-04115",
26747          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
26748        },
26749        {
26750          "vuid": "VUID-vkCmdDispatch-OpImageWrite-04469",
26751          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
26752        },
26753        {
26754          "vuid": "VUID-vkCmdDispatch-groupCountX-00386",
26755          "text": " <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
26756        },
26757        {
26758          "vuid": "VUID-vkCmdDispatch-groupCountY-00387",
26759          "text": " <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
26760        },
26761        {
26762          "vuid": "VUID-vkCmdDispatch-groupCountZ-00388",
26763          "text": " <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
26764        },
26765        {
26766          "vuid": "VUID-vkCmdDispatch-commandBuffer-parameter",
26767          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26768        },
26769        {
26770          "vuid": "VUID-vkCmdDispatch-commandBuffer-recording",
26771          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26772        },
26773        {
26774          "vuid": "VUID-vkCmdDispatch-commandBuffer-cmdpool",
26775          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
26776        },
26777        {
26778          "vuid": "VUID-vkCmdDispatch-renderpass",
26779          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
26780        }
26781      ],
26782      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
26783        {
26784          "vuid": "VUID-vkCmdDispatch-None-02692",
26785          "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>"
26786        }
26787      ],
26788      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
26789        {
26790          "vuid": "VUID-vkCmdDispatch-None-02693",
26791          "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>"
26792        }
26793      ],
26794      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
26795        {
26796          "vuid": "VUID-vkCmdDispatch-filterCubic-02694",
26797          "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>"
26798        },
26799        {
26800          "vuid": "VUID-vkCmdDispatch-filterCubicMinmax-02695",
26801          "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>"
26802        }
26803      ],
26804      "(VK_NV_corner_sampled_image)": [
26805        {
26806          "vuid": "VUID-vkCmdDispatch-flags-02696",
26807          "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>"
26808        }
26809      ],
26810      "(VK_VERSION_1_1)": [
26811        {
26812          "vuid": "VUID-vkCmdDispatch-commandBuffer-02707",
26813          "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"
26814        },
26815        {
26816          "vuid": "VUID-vkCmdDispatch-commandBuffer-02712",
26817          "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"
26818        },
26819        {
26820          "vuid": "VUID-vkCmdDispatch-commandBuffer-02713",
26821          "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"
26822        }
26823      ],
26824      "(VK_EXT_shader_image_atomic_int64)": [
26825        {
26826          "vuid": "VUID-vkCmdDispatch-SampledType-04470",
26827          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
26828        },
26829        {
26830          "vuid": "VUID-vkCmdDispatch-SampledType-04471",
26831          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
26832        },
26833        {
26834          "vuid": "VUID-vkCmdDispatch-SampledType-04472",
26835          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
26836        },
26837        {
26838          "vuid": "VUID-vkCmdDispatch-SampledType-04473",
26839          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
26840        },
26841        {
26842          "vuid": "VUID-vkCmdDispatch-sparseImageInt64Atomics-04474",
26843          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
26844        },
26845        {
26846          "vuid": "VUID-vkCmdDispatch-sparseImageInt64Atomics-04475",
26847          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
26848        }
26849      ]
26850    },
26851    "vkCmdDispatchIndirect": {
26852      "core": [
26853        {
26854          "vuid": "VUID-vkCmdDispatchIndirect-magFilter-04553",
26855          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
26856        },
26857        {
26858          "vuid": "VUID-vkCmdDispatchIndirect-None-02691",
26859          "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>"
26860        },
26861        {
26862          "vuid": "VUID-vkCmdDispatchIndirect-None-02697",
26863          "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>"
26864        },
26865        {
26866          "vuid": "VUID-vkCmdDispatchIndirect-None-02698",
26867          "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>"
26868        },
26869        {
26870          "vuid": "VUID-vkCmdDispatchIndirect-None-02699",
26871          "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"
26872        },
26873        {
26874          "vuid": "VUID-vkCmdDispatchIndirect-None-02700",
26875          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
26876        },
26877        {
26878          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02701",
26879          "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"
26880        },
26881        {
26882          "vuid": "VUID-vkCmdDispatchIndirect-None-02859",
26883          "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"
26884        },
26885        {
26886          "vuid": "VUID-vkCmdDispatchIndirect-None-02702",
26887          "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"
26888        },
26889        {
26890          "vuid": "VUID-vkCmdDispatchIndirect-None-02703",
26891          "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"
26892        },
26893        {
26894          "vuid": "VUID-vkCmdDispatchIndirect-None-02704",
26895          "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"
26896        },
26897        {
26898          "vuid": "VUID-vkCmdDispatchIndirect-None-02705",
26899          "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"
26900        },
26901        {
26902          "vuid": "VUID-vkCmdDispatchIndirect-None-02706",
26903          "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"
26904        },
26905        {
26906          "vuid": "VUID-vkCmdDispatchIndirect-None-04115",
26907          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
26908        },
26909        {
26910          "vuid": "VUID-vkCmdDispatchIndirect-OpImageWrite-04469",
26911          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
26912        },
26913        {
26914          "vuid": "VUID-vkCmdDispatchIndirect-buffer-02708",
26915          "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"
26916        },
26917        {
26918          "vuid": "VUID-vkCmdDispatchIndirect-buffer-02709",
26919          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
26920        },
26921        {
26922          "vuid": "VUID-vkCmdDispatchIndirect-offset-02710",
26923          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
26924        },
26925        {
26926          "vuid": "VUID-vkCmdDispatchIndirect-offset-00407",
26927          "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>"
26928        },
26929        {
26930          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-parameter",
26931          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
26932        },
26933        {
26934          "vuid": "VUID-vkCmdDispatchIndirect-buffer-parameter",
26935          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
26936        },
26937        {
26938          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-recording",
26939          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
26940        },
26941        {
26942          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-cmdpool",
26943          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
26944        },
26945        {
26946          "vuid": "VUID-vkCmdDispatchIndirect-renderpass",
26947          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
26948        },
26949        {
26950          "vuid": "VUID-vkCmdDispatchIndirect-commonparent",
26951          "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>"
26952        }
26953      ],
26954      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
26955        {
26956          "vuid": "VUID-vkCmdDispatchIndirect-None-02692",
26957          "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>"
26958        }
26959      ],
26960      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
26961        {
26962          "vuid": "VUID-vkCmdDispatchIndirect-None-02693",
26963          "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>"
26964        }
26965      ],
26966      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
26967        {
26968          "vuid": "VUID-vkCmdDispatchIndirect-filterCubic-02694",
26969          "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>"
26970        },
26971        {
26972          "vuid": "VUID-vkCmdDispatchIndirect-filterCubicMinmax-02695",
26973          "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>"
26974        }
26975      ],
26976      "(VK_NV_corner_sampled_image)": [
26977        {
26978          "vuid": "VUID-vkCmdDispatchIndirect-flags-02696",
26979          "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>"
26980        }
26981      ],
26982      "(VK_VERSION_1_1)": [
26983        {
26984          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02707",
26985          "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"
26986        },
26987        {
26988          "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02711",
26989          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
26990        }
26991      ],
26992      "(VK_EXT_shader_image_atomic_int64)": [
26993        {
26994          "vuid": "VUID-vkCmdDispatchIndirect-SampledType-04470",
26995          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
26996        },
26997        {
26998          "vuid": "VUID-vkCmdDispatchIndirect-SampledType-04471",
26999          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
27000        },
27001        {
27002          "vuid": "VUID-vkCmdDispatchIndirect-SampledType-04472",
27003          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
27004        },
27005        {
27006          "vuid": "VUID-vkCmdDispatchIndirect-SampledType-04473",
27007          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
27008        },
27009        {
27010          "vuid": "VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04474",
27011          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
27012        },
27013        {
27014          "vuid": "VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04475",
27015          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
27016        }
27017      ]
27018    },
27019    "VkDispatchIndirectCommand": {
27020      "core": [
27021        {
27022          "vuid": "VUID-VkDispatchIndirectCommand-x-00417",
27023          "text": " <code>x</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
27024        },
27025        {
27026          "vuid": "VUID-VkDispatchIndirectCommand-y-00418",
27027          "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
27028        },
27029        {
27030          "vuid": "VUID-VkDispatchIndirectCommand-z-00419",
27031          "text": " <code>z</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
27032        }
27033      ]
27034    },
27035    "vkCmdDispatchBase": {
27036      "core": [
27037        {
27038          "vuid": "VUID-vkCmdDispatchBase-magFilter-04553",
27039          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
27040        },
27041        {
27042          "vuid": "VUID-vkCmdDispatchBase-None-02691",
27043          "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>"
27044        },
27045        {
27046          "vuid": "VUID-vkCmdDispatchBase-None-02697",
27047          "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>"
27048        },
27049        {
27050          "vuid": "VUID-vkCmdDispatchBase-None-02698",
27051          "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>"
27052        },
27053        {
27054          "vuid": "VUID-vkCmdDispatchBase-None-02699",
27055          "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"
27056        },
27057        {
27058          "vuid": "VUID-vkCmdDispatchBase-None-02700",
27059          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
27060        },
27061        {
27062          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-02701",
27063          "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"
27064        },
27065        {
27066          "vuid": "VUID-vkCmdDispatchBase-None-02859",
27067          "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"
27068        },
27069        {
27070          "vuid": "VUID-vkCmdDispatchBase-None-02702",
27071          "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"
27072        },
27073        {
27074          "vuid": "VUID-vkCmdDispatchBase-None-02703",
27075          "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"
27076        },
27077        {
27078          "vuid": "VUID-vkCmdDispatchBase-None-02704",
27079          "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"
27080        },
27081        {
27082          "vuid": "VUID-vkCmdDispatchBase-None-02705",
27083          "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"
27084        },
27085        {
27086          "vuid": "VUID-vkCmdDispatchBase-None-02706",
27087          "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"
27088        },
27089        {
27090          "vuid": "VUID-vkCmdDispatchBase-None-04115",
27091          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
27092        },
27093        {
27094          "vuid": "VUID-vkCmdDispatchBase-OpImageWrite-04469",
27095          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
27096        },
27097        {
27098          "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00421",
27099          "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
27100        },
27101        {
27102          "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00422",
27103          "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
27104        },
27105        {
27106          "vuid": "VUID-vkCmdDispatchBase-baseGroupZ-00423",
27107          "text": " <code>baseGroupZ</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
27108        },
27109        {
27110          "vuid": "VUID-vkCmdDispatchBase-groupCountX-00424",
27111          "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>"
27112        },
27113        {
27114          "vuid": "VUID-vkCmdDispatchBase-groupCountY-00425",
27115          "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>"
27116        },
27117        {
27118          "vuid": "VUID-vkCmdDispatchBase-groupCountZ-00426",
27119          "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>"
27120        },
27121        {
27122          "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00427",
27123          "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"
27124        }
27125      ],
27126      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
27127        {
27128          "vuid": "VUID-vkCmdDispatchBase-None-02692",
27129          "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>"
27130        }
27131      ],
27132      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
27133        {
27134          "vuid": "VUID-vkCmdDispatchBase-None-02693",
27135          "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>"
27136        }
27137      ],
27138      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
27139        {
27140          "vuid": "VUID-vkCmdDispatchBase-filterCubic-02694",
27141          "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>"
27142        },
27143        {
27144          "vuid": "VUID-vkCmdDispatchBase-filterCubicMinmax-02695",
27145          "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>"
27146        }
27147      ],
27148      "(VK_NV_corner_sampled_image)": [
27149        {
27150          "vuid": "VUID-vkCmdDispatchBase-flags-02696",
27151          "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>"
27152        }
27153      ],
27154      "(VK_VERSION_1_1)": [
27155        {
27156          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-02707",
27157          "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"
27158        }
27159      ],
27160      "(VK_EXT_shader_image_atomic_int64)": [
27161        {
27162          "vuid": "VUID-vkCmdDispatchBase-SampledType-04470",
27163          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
27164        },
27165        {
27166          "vuid": "VUID-vkCmdDispatchBase-SampledType-04471",
27167          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
27168        },
27169        {
27170          "vuid": "VUID-vkCmdDispatchBase-SampledType-04472",
27171          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
27172        },
27173        {
27174          "vuid": "VUID-vkCmdDispatchBase-SampledType-04473",
27175          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
27176        },
27177        {
27178          "vuid": "VUID-vkCmdDispatchBase-sparseImageInt64Atomics-04474",
27179          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
27180        },
27181        {
27182          "vuid": "VUID-vkCmdDispatchBase-sparseImageInt64Atomics-04475",
27183          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
27184        }
27185      ],
27186      "(VK_VERSION_1_1,VK_KHR_device_group)": [
27187        {
27188          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-parameter",
27189          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
27190        },
27191        {
27192          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-recording",
27193          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
27194        },
27195        {
27196          "vuid": "VUID-vkCmdDispatchBase-commandBuffer-cmdpool",
27197          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
27198        },
27199        {
27200          "vuid": "VUID-vkCmdDispatchBase-renderpass",
27201          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
27202        }
27203      ]
27204    },
27205    "vkCreateIndirectCommandsLayoutNV": {
27206      "(VK_NV_device_generated_commands)": [
27207        {
27208          "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-deviceGeneratedCommands-02929",
27209          "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
27210        },
27211        {
27212          "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-device-parameter",
27213          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
27214        },
27215        {
27216          "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-pCreateInfo-parameter",
27217          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectCommandsLayoutCreateInfoNV\">VkIndirectCommandsLayoutCreateInfoNV</a> structure"
27218        },
27219        {
27220          "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-pAllocator-parameter",
27221          "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"
27222        },
27223        {
27224          "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-pIndirectCommandsLayout-parameter",
27225          "text": " <code>pIndirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkIndirectCommandsLayoutNV\">VkIndirectCommandsLayoutNV</a> handle"
27226        }
27227      ]
27228    },
27229    "VkIndirectCommandsLayoutCreateInfoNV": {
27230      "(VK_NV_device_generated_commands)": [
27231        {
27232          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-02930",
27233          "text": " The <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
27234        },
27235        {
27236          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-02931",
27237          "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>"
27238        },
27239        {
27240          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02932",
27241          "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"
27242        },
27243        {
27244          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02933",
27245          "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"
27246        },
27247        {
27248          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02934",
27249          "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>)"
27250        },
27251        {
27252          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02935",
27253          "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>"
27254        },
27255        {
27256          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-02936",
27257          "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>"
27258        },
27259        {
27260          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-02937",
27261          "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"
27262        },
27263        {
27264          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-sType-sType",
27265          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV</code>"
27266        },
27267        {
27268          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pNext-pNext",
27269          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
27270        },
27271        {
27272          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-flags-parameter",
27273          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkIndirectCommandsLayoutUsageFlagBitsNV\">VkIndirectCommandsLayoutUsageFlagBitsNV</a> values"
27274        },
27275        {
27276          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-flags-requiredbitmask",
27277          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
27278        },
27279        {
27280          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-parameter",
27281          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
27282        },
27283        {
27284          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-parameter",
27285          "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"
27286        },
27287        {
27288          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-parameter",
27289          "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"
27290        },
27291        {
27292          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-arraylength",
27293          "text": " <code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
27294        },
27295        {
27296          "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-arraylength",
27297          "text": " <code>streamCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
27298        }
27299      ]
27300    },
27301    "vkDestroyIndirectCommandsLayoutNV": {
27302      "(VK_NV_device_generated_commands)": [
27303        {
27304          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02938",
27305          "text": " All submitted commands that refer to <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have completed execution"
27306        },
27307        {
27308          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02939",
27309          "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"
27310        },
27311        {
27312          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02940",
27313          "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>"
27314        },
27315        {
27316          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-deviceGeneratedCommands-02941",
27317          "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
27318        },
27319        {
27320          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-device-parameter",
27321          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
27322        },
27323        {
27324          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parameter",
27325          "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"
27326        },
27327        {
27328          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-pAllocator-parameter",
27329          "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"
27330        },
27331        {
27332          "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parent",
27333          "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>"
27334        }
27335      ]
27336    },
27337    "VkIndirectCommandsStreamNV": {
27338      "(VK_NV_device_generated_commands)": [
27339        {
27340          "vuid": "VUID-VkIndirectCommandsStreamNV-buffer-02942",
27341          "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"
27342        },
27343        {
27344          "vuid": "VUID-VkIndirectCommandsStreamNV-offset-02943",
27345          "text": " The <code>offset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>minIndirectCommandsBufferOffsetAlignment</code>"
27346        },
27347        {
27348          "vuid": "VUID-VkIndirectCommandsStreamNV-buffer-02975",
27349          "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"
27350        },
27351        {
27352          "vuid": "VUID-VkIndirectCommandsStreamNV-buffer-parameter",
27353          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
27354        }
27355      ]
27356    },
27357    "VkBindShaderGroupIndirectCommandNV": {
27358      "(VK_NV_device_generated_commands)": [
27359        {
27360          "vuid": "VUID-VkBindShaderGroupIndirectCommandNV-None-02944",
27361          "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>"
27362        },
27363        {
27364          "vuid": "VUID-VkBindShaderGroupIndirectCommandNV-index-02945",
27365          "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"
27366        }
27367      ]
27368    },
27369    "VkBindIndexBufferIndirectCommandNV": {
27370      "(VK_NV_device_generated_commands)": [
27371        {
27372          "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-None-02946",
27373          "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"
27374        },
27375        {
27376          "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-bufferAddress-02947",
27377          "text": " The <code>bufferAddress</code> <strong class=\"purple\">must</strong> be aligned to the <code>indexType</code> used"
27378        },
27379        {
27380          "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-None-02948",
27381          "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"
27382        },
27383        {
27384          "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-indexType-parameter",
27385          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
27386        }
27387      ]
27388    },
27389    "VkBindVertexBufferIndirectCommandNV": {
27390      "(VK_NV_device_generated_commands)": [
27391        {
27392          "vuid": "VUID-VkBindVertexBufferIndirectCommandNV-None-02949",
27393          "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"
27394        },
27395        {
27396          "vuid": "VUID-VkBindVertexBufferIndirectCommandNV-None-02950",
27397          "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"
27398        }
27399      ]
27400    },
27401    "VkIndirectCommandsLayoutTokenNV": {
27402      "(VK_NV_device_generated_commands)": [
27403        {
27404          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-stream-02951",
27405          "text": " <code>stream</code> <strong class=\"purple\">must</strong> be smaller than <code>VkIndirectCommandsLayoutCreateInfoNV</code>::<code>streamCount</code>"
27406        },
27407        {
27408          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-offset-02952",
27409          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxIndirectCommandsTokenOffset</code>"
27410        },
27411        {
27412          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02976",
27413          "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"
27414        },
27415        {
27416          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02977",
27417          "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"
27418        },
27419        {
27420          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02978",
27421          "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>"
27422        },
27423        {
27424          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02979",
27425          "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>"
27426        },
27427        {
27428          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02980",
27429          "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>"
27430        },
27431        {
27432          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02981",
27433          "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>"
27434        },
27435        {
27436          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02982",
27437          "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"
27438        },
27439        {
27440          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02983",
27441          "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>"
27442        },
27443        {
27444          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02984",
27445          "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´"
27446        },
27447        {
27448          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-sType-sType",
27449          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV</code>"
27450        },
27451        {
27452          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pNext-pNext",
27453          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
27454        },
27455        {
27456          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-parameter",
27457          "text": " <code>tokenType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeNV\">VkIndirectCommandsTokenTypeNV</a> value"
27458        },
27459        {
27460          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pushconstantPipelineLayout-parameter",
27461          "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"
27462        },
27463        {
27464          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pushconstantShaderStageFlags-parameter",
27465          "text": " <code>pushconstantShaderStageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
27466        },
27467        {
27468          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-indirectStateFlags-parameter",
27469          "text": " <code>indirectStateFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkIndirectStateFlagBitsNV\">VkIndirectStateFlagBitsNV</a> values"
27470        },
27471        {
27472          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypes-parameter",
27473          "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"
27474        },
27475        {
27476          "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypeValues-parameter",
27477          "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"
27478        }
27479      ]
27480    },
27481    "vkGetGeneratedCommandsMemoryRequirementsNV": {
27482      "(VK_NV_device_generated_commands)": [
27483        {
27484          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-deviceGeneratedCommands-02906",
27485          "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
27486        },
27487        {
27488          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-device-parameter",
27489          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
27490        },
27491        {
27492          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pInfo-parameter",
27493          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsMemoryRequirementsInfoNV\">VkGeneratedCommandsMemoryRequirementsInfoNV</a> structure"
27494        },
27495        {
27496          "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pMemoryRequirements-parameter",
27497          "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure"
27498        }
27499      ]
27500    },
27501    "VkGeneratedCommandsMemoryRequirementsInfoNV": {
27502      "(VK_NV_device_generated_commands)": [
27503        {
27504          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-maxSequencesCount-02907",
27505          "text": " <code>maxSequencesCount</code> <strong class=\"purple\">must</strong> be less or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>::<code>maxIndirectSequenceCount</code>"
27506        },
27507        {
27508          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-sType-sType",
27509          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV</code>"
27510        },
27511        {
27512          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pNext-pNext",
27513          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
27514        },
27515        {
27516          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-parameter",
27517          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
27518        },
27519        {
27520          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipeline-parameter",
27521          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
27522        },
27523        {
27524          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-indirectCommandsLayout-parameter",
27525          "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutNV\">VkIndirectCommandsLayoutNV</a> handle"
27526        },
27527        {
27528          "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-commonparent",
27529          "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>"
27530        }
27531      ]
27532    },
27533    "vkCmdExecuteGeneratedCommandsNV": {
27534      "core": [
27535        {
27536          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-magFilter-04553",
27537          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
27538        },
27539        {
27540          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02691",
27541          "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>"
27542        },
27543        {
27544          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02697",
27545          "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>"
27546        },
27547        {
27548          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02698",
27549          "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>"
27550        },
27551        {
27552          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02699",
27553          "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"
27554        },
27555        {
27556          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02700",
27557          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
27558        },
27559        {
27560          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02701",
27561          "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"
27562        },
27563        {
27564          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02859",
27565          "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"
27566        },
27567        {
27568          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02702",
27569          "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"
27570        },
27571        {
27572          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02703",
27573          "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"
27574        },
27575        {
27576          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02704",
27577          "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"
27578        },
27579        {
27580          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02705",
27581          "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"
27582        },
27583        {
27584          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02706",
27585          "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"
27586        },
27587        {
27588          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04115",
27589          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
27590        },
27591        {
27592          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWrite-04469",
27593          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
27594        },
27595        {
27596          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-renderPass-02684",
27597          "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>"
27598        },
27599        {
27600          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-subpass-02685",
27601          "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>"
27602        },
27603        {
27604          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02686",
27605          "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
27606        },
27607        {
27608          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02687",
27609          "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"
27610        },
27611        {
27612          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04007",
27613          "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"
27614        },
27615        {
27616          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04008",
27617          "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>"
27618        },
27619        {
27620          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02721",
27621          "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>"
27622        },
27623        {
27624          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-isPreprocessed-02908",
27625          "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"
27626        },
27627        {
27628          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pipeline-02909",
27629          "text": " <code>VkGeneratedCommandsInfoNV</code>::<code>pipeline</code> <strong class=\"purple\">must</strong> match the current bound pipeline at <code>VkGeneratedCommandsInfoNV</code>::<code>pipelineBindPoint</code>"
27630        },
27631        {
27632          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-deviceGeneratedCommands-02911",
27633          "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
27634        }
27635      ],
27636      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
27637        {
27638          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02692",
27639          "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>"
27640        }
27641      ],
27642      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
27643        {
27644          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02693",
27645          "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>"
27646        }
27647      ],
27648      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
27649        {
27650          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-filterCubic-02694",
27651          "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>"
27652        },
27653        {
27654          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-filterCubicMinmax-02695",
27655          "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>"
27656        }
27657      ],
27658      "(VK_NV_corner_sampled_image)": [
27659        {
27660          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-flags-02696",
27661          "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>"
27662        }
27663      ],
27664      "(VK_VERSION_1_1)": [
27665        {
27666          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02707",
27667          "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"
27668        },
27669        {
27670          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02970",
27671          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
27672        }
27673      ],
27674      "(VK_EXT_shader_image_atomic_int64)": [
27675        {
27676          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04470",
27677          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
27678        },
27679        {
27680          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04471",
27681          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
27682        },
27683        {
27684          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04472",
27685          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
27686        },
27687        {
27688          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04473",
27689          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
27690        },
27691        {
27692          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sparseImageInt64Atomics-04474",
27693          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
27694        },
27695        {
27696          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sparseImageInt64Atomics-04475",
27697          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
27698        }
27699      ],
27700      "(VK_VERSION_1_1,VK_KHR_multiview)": [
27701        {
27702          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-maxMultiviewInstanceIndex-02688",
27703          "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>"
27704        }
27705      ],
27706      "(VK_EXT_sample_locations)": [
27707        {
27708          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-02689",
27709          "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"
27710        }
27711      ],
27712      "(VK_EXT_extended_dynamic_state)": [
27713        {
27714          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03417",
27715          "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 <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"
27716        },
27717        {
27718          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-scissorCount-03418",
27719          "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 <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"
27720        },
27721        {
27722          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03419",
27723          "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>"
27724        },
27725        {
27726          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-primitiveTopology-03420",
27727          "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"
27728        }
27729      ],
27730      "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
27731        {
27732          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04137",
27733          "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_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
27734        },
27735        {
27736          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04138",
27737          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
27738        }
27739      ],
27740      "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
27741        {
27742          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04139",
27743          "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_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
27744        },
27745        {
27746          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04140",
27747          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
27748        }
27749      ],
27750      "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
27751        {
27752          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04141",
27753          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
27754        }
27755      ],
27756      "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
27757        {
27758          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04142",
27759          "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>"
27760        }
27761      ],
27762      "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [
27763        {
27764          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-primitiveFragmentShadingRateWithMultipleViewports-04552",
27765          "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, 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> be <code>1</code>"
27766        }
27767      ],
27768      "(VK_EXT_transform_feedback)": [
27769        {
27770          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02910",
27771          "text": " Transform feedback <strong class=\"purple\">must</strong> not be active"
27772        }
27773      ],
27774      "(VK_NV_device_generated_commands)": [
27775        {
27776          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-parameter",
27777          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
27778        },
27779        {
27780          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pGeneratedCommandsInfo-parameter",
27781          "text": " <code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsInfoNV\">VkGeneratedCommandsInfoNV</a> structure"
27782        },
27783        {
27784          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-recording",
27785          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
27786        },
27787        {
27788          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-cmdpool",
27789          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
27790        },
27791        {
27792          "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-renderpass",
27793          "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
27794        }
27795      ]
27796    },
27797    "VkGeneratedCommandsInfoNV": {
27798      "(VK_NV_device_generated_commands)": [
27799        {
27800          "vuid": "VUID-VkGeneratedCommandsInfoNV-pipeline-02912",
27801          "text": " The provided <code>pipeline</code> <strong class=\"purple\">must</strong> match the pipeline bound at execution time"
27802        },
27803        {
27804          "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02913",
27805          "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"
27806        },
27807        {
27808          "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02914",
27809          "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>"
27810        },
27811        {
27812          "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02915",
27813          "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>"
27814        },
27815        {
27816          "vuid": "VUID-VkGeneratedCommandsInfoNV-streamCount-02916",
27817          "text": " <code>streamCount</code> <strong class=\"purple\">must</strong> match the <code>indirectCommandsLayout</code>&#8217;s <code>streamCount</code>"
27818        },
27819        {
27820          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCount-02917",
27821          "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>"
27822        },
27823        {
27824          "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02918",
27825          "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"
27826        },
27827        {
27828          "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessOffset-02919",
27829          "text": " <code>preprocessOffset</code> <strong class=\"purple\">must</strong> be aligned to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>::<code>minIndirectCommandsBufferOffsetAlignment</code>"
27830        },
27831        {
27832          "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02971",
27833          "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"
27834        },
27835        {
27836          "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessSize-02920",
27837          "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"
27838        },
27839        {
27840          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02921",
27841          "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"
27842        },
27843        {
27844          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02922",
27845          "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"
27846        },
27847        {
27848          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02923",
27849          "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>"
27850        },
27851        {
27852          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02972",
27853          "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"
27854        },
27855        {
27856          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02924",
27857          "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>"
27858        },
27859        {
27860          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02925",
27861          "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"
27862        },
27863        {
27864          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02926",
27865          "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>"
27866        },
27867        {
27868          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02973",
27869          "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"
27870        },
27871        {
27872          "vuid": "VUID-VkGeneratedCommandsInfoNV-sType-sType",
27873          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV</code>"
27874        },
27875        {
27876          "vuid": "VUID-VkGeneratedCommandsInfoNV-pNext-pNext",
27877          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
27878        },
27879        {
27880          "vuid": "VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-parameter",
27881          "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
27882        },
27883        {
27884          "vuid": "VUID-VkGeneratedCommandsInfoNV-pipeline-parameter",
27885          "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle"
27886        },
27887        {
27888          "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-parameter",
27889          "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutNV\">VkIndirectCommandsLayoutNV</a> handle"
27890        },
27891        {
27892          "vuid": "VUID-VkGeneratedCommandsInfoNV-pStreams-parameter",
27893          "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"
27894        },
27895        {
27896          "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-parameter",
27897          "text": " <code>preprocessBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
27898        },
27899        {
27900          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-parameter",
27901          "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"
27902        },
27903        {
27904          "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-parameter",
27905          "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"
27906        },
27907        {
27908          "vuid": "VUID-VkGeneratedCommandsInfoNV-streamCount-arraylength",
27909          "text": " <code>streamCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
27910        },
27911        {
27912          "vuid": "VUID-VkGeneratedCommandsInfoNV-commonparent",
27913          "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>"
27914        }
27915      ]
27916    },
27917    "vkCmdPreprocessGeneratedCommandsNV": {
27918      "(VK_NV_device_generated_commands)+(VK_VERSION_1_1)": [
27919        {
27920          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-02974",
27921          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
27922        }
27923      ],
27924      "(VK_NV_device_generated_commands)": [
27925        {
27926          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-02927",
27927          "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"
27928        },
27929        {
27930          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-deviceGeneratedCommands-02928",
27931          "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
27932        },
27933        {
27934          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-parameter",
27935          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
27936        },
27937        {
27938          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-parameter",
27939          "text": " <code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsInfoNV\">VkGeneratedCommandsInfoNV</a> structure"
27940        },
27941        {
27942          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-recording",
27943          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
27944        },
27945        {
27946          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-cmdpool",
27947          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
27948        },
27949        {
27950          "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-renderpass",
27951          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
27952        }
27953      ]
27954    },
27955    "vkGetPhysicalDeviceSparseImageFormatProperties": {
27956      "core": [
27957        {
27958          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-01094",
27959          "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"
27960        },
27961        {
27962          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-physicalDevice-parameter",
27963          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
27964        },
27965        {
27966          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-format-parameter",
27967          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
27968        },
27969        {
27970          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-type-parameter",
27971          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
27972        },
27973        {
27974          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-parameter",
27975          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
27976        },
27977        {
27978          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-parameter",
27979          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
27980        },
27981        {
27982          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-requiredbitmask",
27983          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
27984        },
27985        {
27986          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-tiling-parameter",
27987          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
27988        },
27989        {
27990          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pPropertyCount-parameter",
27991          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
27992        },
27993        {
27994          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pProperties-parameter",
27995          "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"
27996        }
27997      ]
27998    },
27999    "vkGetPhysicalDeviceSparseImageFormatProperties2": {
28000      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
28001        {
28002          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter",
28003          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
28004        },
28005        {
28006          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pFormatInfo-parameter",
28007          "text": " <code>pFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSparseImageFormatInfo2\">VkPhysicalDeviceSparseImageFormatInfo2</a> structure"
28008        },
28009        {
28010          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pPropertyCount-parameter",
28011          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
28012        },
28013        {
28014          "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pProperties-parameter",
28015          "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"
28016        }
28017      ]
28018    },
28019    "VkPhysicalDeviceSparseImageFormatInfo2": {
28020      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
28021        {
28022          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-01095",
28023          "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"
28024        },
28025        {
28026          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-sType-sType",
28027          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2</code>"
28028        },
28029        {
28030          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-pNext-pNext",
28031          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28032        },
28033        {
28034          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-format-parameter",
28035          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
28036        },
28037        {
28038          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-type-parameter",
28039          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
28040        },
28041        {
28042          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-parameter",
28043          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
28044        },
28045        {
28046          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-parameter",
28047          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
28048        },
28049        {
28050          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-requiredbitmask",
28051          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
28052        },
28053        {
28054          "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-tiling-parameter",
28055          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
28056        }
28057      ]
28058    },
28059    "VkSparseImageFormatProperties2": {
28060      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
28061        {
28062          "vuid": "VUID-VkSparseImageFormatProperties2-sType-sType",
28063          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2</code>"
28064        },
28065        {
28066          "vuid": "VUID-VkSparseImageFormatProperties2-pNext-pNext",
28067          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28068        }
28069      ]
28070    },
28071    "vkGetImageSparseMemoryRequirements": {
28072      "core": [
28073        {
28074          "vuid": "VUID-vkGetImageSparseMemoryRequirements-device-parameter",
28075          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
28076        },
28077        {
28078          "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parameter",
28079          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
28080        },
28081        {
28082          "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirementCount-parameter",
28083          "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
28084        },
28085        {
28086          "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter",
28087          "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"
28088        },
28089        {
28090          "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parent",
28091          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
28092        }
28093      ]
28094    },
28095    "vkGetImageSparseMemoryRequirements2": {
28096      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
28097        {
28098          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-device-parameter",
28099          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
28100        },
28101        {
28102          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pInfo-parameter",
28103          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageSparseMemoryRequirementsInfo2\">VkImageSparseMemoryRequirementsInfo2</a> structure"
28104        },
28105        {
28106          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirementCount-parameter",
28107          "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
28108        },
28109        {
28110          "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirements-parameter",
28111          "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"
28112        }
28113      ]
28114    },
28115    "VkImageSparseMemoryRequirementsInfo2": {
28116      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
28117        {
28118          "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-sType-sType",
28119          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2</code>"
28120        },
28121        {
28122          "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-pNext-pNext",
28123          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28124        },
28125        {
28126          "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-image-parameter",
28127          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
28128        }
28129      ]
28130    },
28131    "VkSparseImageMemoryRequirements2": {
28132      "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
28133        {
28134          "vuid": "VUID-VkSparseImageMemoryRequirements2-sType-sType",
28135          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2</code>"
28136        },
28137        {
28138          "vuid": "VUID-VkSparseImageMemoryRequirements2-pNext-pNext",
28139          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28140        }
28141      ]
28142    },
28143    "VkSparseMemoryBind": {
28144      "core": [
28145        {
28146          "vuid": "VUID-VkSparseMemoryBind-memory-01096",
28147          "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>"
28148        },
28149        {
28150          "vuid": "VUID-VkSparseMemoryBind-memory-01097",
28151          "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"
28152        },
28153        {
28154          "vuid": "VUID-VkSparseMemoryBind-size-01098",
28155          "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
28156        },
28157        {
28158          "vuid": "VUID-VkSparseMemoryBind-resourceOffset-01099",
28159          "text": " <code>resourceOffset</code> <strong class=\"purple\">must</strong> be less than the size of the resource"
28160        },
28161        {
28162          "vuid": "VUID-VkSparseMemoryBind-size-01100",
28163          "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the resource minus <code>resourceOffset</code>"
28164        },
28165        {
28166          "vuid": "VUID-VkSparseMemoryBind-memoryOffset-01101",
28167          "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
28168        },
28169        {
28170          "vuid": "VUID-VkSparseMemoryBind-size-01102",
28171          "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>"
28172        },
28173        {
28174          "vuid": "VUID-VkSparseMemoryBind-memory-parameter",
28175          "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"
28176        },
28177        {
28178          "vuid": "VUID-VkSparseMemoryBind-flags-parameter",
28179          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values"
28180        }
28181      ],
28182      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
28183        {
28184          "vuid": "VUID-VkSparseMemoryBind-memory-02730",
28185          "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"
28186        },
28187        {
28188          "vuid": "VUID-VkSparseMemoryBind-memory-02731",
28189          "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"
28190        }
28191      ]
28192    },
28193    "VkSparseBufferMemoryBindInfo": {
28194      "core": [
28195        {
28196          "vuid": "VUID-VkSparseBufferMemoryBindInfo-buffer-parameter",
28197          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
28198        },
28199        {
28200          "vuid": "VUID-VkSparseBufferMemoryBindInfo-pBinds-parameter",
28201          "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"
28202        },
28203        {
28204          "vuid": "VUID-VkSparseBufferMemoryBindInfo-bindCount-arraylength",
28205          "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
28206        }
28207      ]
28208    },
28209    "VkSparseImageOpaqueMemoryBindInfo": {
28210      "core": [
28211        {
28212          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103",
28213          "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>"
28214        },
28215        {
28216          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-image-parameter",
28217          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
28218        },
28219        {
28220          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-parameter",
28221          "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"
28222        },
28223        {
28224          "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-bindCount-arraylength",
28225          "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
28226        }
28227      ]
28228    },
28229    "VkSparseImageMemoryBindInfo": {
28230      "core": [
28231        {
28232          "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01722",
28233          "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"
28234        },
28235        {
28236          "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01723",
28237          "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"
28238        },
28239        {
28240          "vuid": "VUID-VkSparseImageMemoryBindInfo-image-02901",
28241          "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> set"
28242        },
28243        {
28244          "vuid": "VUID-VkSparseImageMemoryBindInfo-image-parameter",
28245          "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle"
28246        },
28247        {
28248          "vuid": "VUID-VkSparseImageMemoryBindInfo-pBinds-parameter",
28249          "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"
28250        },
28251        {
28252          "vuid": "VUID-VkSparseImageMemoryBindInfo-bindCount-arraylength",
28253          "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
28254        }
28255      ]
28256    },
28257    "VkSparseImageMemoryBind": {
28258      "core": [
28259        {
28260          "vuid": "VUID-VkSparseImageMemoryBind-memory-01104",
28261          "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"
28262        },
28263        {
28264          "vuid": "VUID-VkSparseImageMemoryBind-memory-01105",
28265          "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>"
28266        },
28267        {
28268          "vuid": "VUID-VkSparseImageMemoryBind-subresource-01106",
28269          "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>)"
28270        },
28271        {
28272          "vuid": "VUID-VkSparseImageMemoryBind-offset-01107",
28273          "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"
28274        },
28275        {
28276          "vuid": "VUID-VkSparseImageMemoryBind-extent-01108",
28277          "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"
28278        },
28279        {
28280          "vuid": "VUID-VkSparseImageMemoryBind-offset-01109",
28281          "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"
28282        },
28283        {
28284          "vuid": "VUID-VkSparseImageMemoryBind-extent-01110",
28285          "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"
28286        },
28287        {
28288          "vuid": "VUID-VkSparseImageMemoryBind-offset-01111",
28289          "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"
28290        },
28291        {
28292          "vuid": "VUID-VkSparseImageMemoryBind-extent-01112",
28293          "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"
28294        },
28295        {
28296          "vuid": "VUID-VkSparseImageMemoryBind-subresource-parameter",
28297          "text": " <code>subresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresource\">VkImageSubresource</a> structure"
28298        },
28299        {
28300          "vuid": "VUID-VkSparseImageMemoryBind-memory-parameter",
28301          "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"
28302        },
28303        {
28304          "vuid": "VUID-VkSparseImageMemoryBind-flags-parameter",
28305          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values"
28306        }
28307      ],
28308      "(VK_VERSION_1_1,VK_KHR_external_memory)": [
28309        {
28310          "vuid": "VUID-VkSparseImageMemoryBind-memory-02732",
28311          "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"
28312        },
28313        {
28314          "vuid": "VUID-VkSparseImageMemoryBind-memory-02733",
28315          "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"
28316        }
28317      ]
28318    },
28319    "vkQueueBindSparse": {
28320      "core": [
28321        {
28322          "vuid": "VUID-vkQueueBindSparse-fence-01113",
28323          "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"
28324        },
28325        {
28326          "vuid": "VUID-vkQueueBindSparse-fence-01114",
28327          "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"
28328        },
28329        {
28330          "vuid": "VUID-vkQueueBindSparse-pSignalSemaphores-01115",
28331          "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"
28332        },
28333        {
28334          "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01116",
28335          "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"
28336        },
28337        {
28338          "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01117",
28339          "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"
28340        },
28341        {
28342          "vuid": "VUID-vkQueueBindSparse-queue-parameter",
28343          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
28344        },
28345        {
28346          "vuid": "VUID-vkQueueBindSparse-pBindInfo-parameter",
28347          "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"
28348        },
28349        {
28350          "vuid": "VUID-vkQueueBindSparse-fence-parameter",
28351          "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"
28352        },
28353        {
28354          "vuid": "VUID-vkQueueBindSparse-queuetype",
28355          "text": " The <code>queue</code> <strong class=\"purple\">must</strong> support sparse binding operations"
28356        },
28357        {
28358          "vuid": "VUID-vkQueueBindSparse-commonparent",
28359          "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>"
28360        }
28361      ],
28362      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
28363        {
28364          "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-03245",
28365          "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"
28366        }
28367      ]
28368    },
28369    "VkBindSparseInfo": {
28370      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
28371        {
28372          "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-03246",
28373          "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"
28374        },
28375        {
28376          "vuid": "VUID-VkBindSparseInfo-pNext-03247",
28377          "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>"
28378        },
28379        {
28380          "vuid": "VUID-VkBindSparseInfo-pNext-03248",
28381          "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>"
28382        },
28383        {
28384          "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-03249",
28385          "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"
28386        },
28387        {
28388          "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-03250",
28389          "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>"
28390        },
28391        {
28392          "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-03251",
28393          "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>"
28394        }
28395      ],
28396      "core": [
28397        {
28398          "vuid": "VUID-VkBindSparseInfo-sType-sType",
28399          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_SPARSE_INFO</code>"
28400        },
28401        {
28402          "vuid": "VUID-VkBindSparseInfo-pNext-pNext",
28403          "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>"
28404        },
28405        {
28406          "vuid": "VUID-VkBindSparseInfo-sType-unique",
28407          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
28408        },
28409        {
28410          "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-parameter",
28411          "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"
28412        },
28413        {
28414          "vuid": "VUID-VkBindSparseInfo-pBufferBinds-parameter",
28415          "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"
28416        },
28417        {
28418          "vuid": "VUID-VkBindSparseInfo-pImageOpaqueBinds-parameter",
28419          "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"
28420        },
28421        {
28422          "vuid": "VUID-VkBindSparseInfo-pImageBinds-parameter",
28423          "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"
28424        },
28425        {
28426          "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-parameter",
28427          "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"
28428        },
28429        {
28430          "vuid": "VUID-VkBindSparseInfo-commonparent",
28431          "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>"
28432        }
28433      ]
28434    },
28435    "VkDeviceGroupBindSparseInfo": {
28436      "(VK_VERSION_1_1,VK_KHR_device_group)": [
28437        {
28438          "vuid": "VUID-VkDeviceGroupBindSparseInfo-resourceDeviceIndex-01118",
28439          "text": " <code>resourceDeviceIndex</code> and <code>memoryDeviceIndex</code> <strong class=\"purple\">must</strong> both be valid device indices"
28440        },
28441        {
28442          "vuid": "VUID-VkDeviceGroupBindSparseInfo-memoryDeviceIndex-01119",
28443          "text": " Each memory allocation bound in this batch <strong class=\"purple\">must</strong> have allocated an instance for <code>memoryDeviceIndex</code>"
28444        },
28445        {
28446          "vuid": "VUID-VkDeviceGroupBindSparseInfo-sType-sType",
28447          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO</code>"
28448        }
28449      ]
28450    },
28451    "vkCreateAndroidSurfaceKHR": {
28452      "(VK_KHR_surface)+(VK_KHR_android_surface)": [
28453        {
28454          "vuid": "VUID-vkCreateAndroidSurfaceKHR-instance-parameter",
28455          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
28456        },
28457        {
28458          "vuid": "VUID-vkCreateAndroidSurfaceKHR-pCreateInfo-parameter",
28459          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAndroidSurfaceCreateInfoKHR\">VkAndroidSurfaceCreateInfoKHR</a> structure"
28460        },
28461        {
28462          "vuid": "VUID-vkCreateAndroidSurfaceKHR-pAllocator-parameter",
28463          "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"
28464        },
28465        {
28466          "vuid": "VUID-vkCreateAndroidSurfaceKHR-pSurface-parameter",
28467          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
28468        }
28469      ]
28470    },
28471    "VkAndroidSurfaceCreateInfoKHR": {
28472      "(VK_KHR_surface)+(VK_KHR_android_surface)": [
28473        {
28474          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-window-01248",
28475          "text": " <code>window</code> <strong class=\"purple\">must</strong> point to a valid Android <code>ANativeWindow</code>"
28476        },
28477        {
28478          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-sType-sType",
28479          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR</code>"
28480        },
28481        {
28482          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-pNext-pNext",
28483          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28484        },
28485        {
28486          "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-flags-zerobitmask",
28487          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
28488        }
28489      ]
28490    },
28491    "vkCreateWaylandSurfaceKHR": {
28492      "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
28493        {
28494          "vuid": "VUID-vkCreateWaylandSurfaceKHR-instance-parameter",
28495          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
28496        },
28497        {
28498          "vuid": "VUID-vkCreateWaylandSurfaceKHR-pCreateInfo-parameter",
28499          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkWaylandSurfaceCreateInfoKHR\">VkWaylandSurfaceCreateInfoKHR</a> structure"
28500        },
28501        {
28502          "vuid": "VUID-vkCreateWaylandSurfaceKHR-pAllocator-parameter",
28503          "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"
28504        },
28505        {
28506          "vuid": "VUID-vkCreateWaylandSurfaceKHR-pSurface-parameter",
28507          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
28508        }
28509      ]
28510    },
28511    "VkWaylandSurfaceCreateInfoKHR": {
28512      "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
28513        {
28514          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-display-01304",
28515          "text": " <code>display</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_display</code>"
28516        },
28517        {
28518          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-surface-01305",
28519          "text": " <code>surface</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_surface</code>"
28520        },
28521        {
28522          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-sType-sType",
28523          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR</code>"
28524        },
28525        {
28526          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-pNext-pNext",
28527          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28528        },
28529        {
28530          "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-flags-zerobitmask",
28531          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
28532        }
28533      ]
28534    },
28535    "vkCreateWin32SurfaceKHR": {
28536      "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
28537        {
28538          "vuid": "VUID-vkCreateWin32SurfaceKHR-instance-parameter",
28539          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
28540        },
28541        {
28542          "vuid": "VUID-vkCreateWin32SurfaceKHR-pCreateInfo-parameter",
28543          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkWin32SurfaceCreateInfoKHR\">VkWin32SurfaceCreateInfoKHR</a> structure"
28544        },
28545        {
28546          "vuid": "VUID-vkCreateWin32SurfaceKHR-pAllocator-parameter",
28547          "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"
28548        },
28549        {
28550          "vuid": "VUID-vkCreateWin32SurfaceKHR-pSurface-parameter",
28551          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
28552        }
28553      ]
28554    },
28555    "VkWin32SurfaceCreateInfoKHR": {
28556      "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
28557        {
28558          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hinstance-01307",
28559          "text": " <code>hinstance</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HINSTANCE</code>"
28560        },
28561        {
28562          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hwnd-01308",
28563          "text": " <code>hwnd</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HWND</code>"
28564        },
28565        {
28566          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-sType-sType",
28567          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR</code>"
28568        },
28569        {
28570          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-pNext-pNext",
28571          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28572        },
28573        {
28574          "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-flags-zerobitmask",
28575          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
28576        }
28577      ]
28578    },
28579    "vkCreateXcbSurfaceKHR": {
28580      "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
28581        {
28582          "vuid": "VUID-vkCreateXcbSurfaceKHR-instance-parameter",
28583          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
28584        },
28585        {
28586          "vuid": "VUID-vkCreateXcbSurfaceKHR-pCreateInfo-parameter",
28587          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkXcbSurfaceCreateInfoKHR\">VkXcbSurfaceCreateInfoKHR</a> structure"
28588        },
28589        {
28590          "vuid": "VUID-vkCreateXcbSurfaceKHR-pAllocator-parameter",
28591          "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"
28592        },
28593        {
28594          "vuid": "VUID-vkCreateXcbSurfaceKHR-pSurface-parameter",
28595          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
28596        }
28597      ]
28598    },
28599    "VkXcbSurfaceCreateInfoKHR": {
28600      "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
28601        {
28602          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-connection-01310",
28603          "text": " <code>connection</code> <strong class=\"purple\">must</strong> point to a valid X11 <code>xcb_connection_t</code>"
28604        },
28605        {
28606          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-window-01311",
28607          "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid X11 <code>xcb_window_t</code>"
28608        },
28609        {
28610          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-sType-sType",
28611          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR</code>"
28612        },
28613        {
28614          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-pNext-pNext",
28615          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28616        },
28617        {
28618          "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-flags-zerobitmask",
28619          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
28620        }
28621      ]
28622    },
28623    "vkCreateXlibSurfaceKHR": {
28624      "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
28625        {
28626          "vuid": "VUID-vkCreateXlibSurfaceKHR-instance-parameter",
28627          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
28628        },
28629        {
28630          "vuid": "VUID-vkCreateXlibSurfaceKHR-pCreateInfo-parameter",
28631          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkXlibSurfaceCreateInfoKHR\">VkXlibSurfaceCreateInfoKHR</a> structure"
28632        },
28633        {
28634          "vuid": "VUID-vkCreateXlibSurfaceKHR-pAllocator-parameter",
28635          "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"
28636        },
28637        {
28638          "vuid": "VUID-vkCreateXlibSurfaceKHR-pSurface-parameter",
28639          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
28640        }
28641      ]
28642    },
28643    "VkXlibSurfaceCreateInfoKHR": {
28644      "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
28645        {
28646          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-dpy-01313",
28647          "text": " <code>dpy</code> <strong class=\"purple\">must</strong> point to a valid Xlib <code>Display</code>"
28648        },
28649        {
28650          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-window-01314",
28651          "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid Xlib <code>Window</code>"
28652        },
28653        {
28654          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-sType-sType",
28655          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR</code>"
28656        },
28657        {
28658          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-pNext-pNext",
28659          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28660        },
28661        {
28662          "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-flags-zerobitmask",
28663          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
28664        }
28665      ]
28666    },
28667    "vkCreateDirectFBSurfaceEXT": {
28668      "(VK_KHR_surface)+(VK_EXT_directfb_surface)": [
28669        {
28670          "vuid": "VUID-vkCreateDirectFBSurfaceEXT-instance-parameter",
28671          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
28672        },
28673        {
28674          "vuid": "VUID-vkCreateDirectFBSurfaceEXT-pCreateInfo-parameter",
28675          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDirectFBSurfaceCreateInfoEXT\">VkDirectFBSurfaceCreateInfoEXT</a> structure"
28676        },
28677        {
28678          "vuid": "VUID-vkCreateDirectFBSurfaceEXT-pAllocator-parameter",
28679          "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"
28680        },
28681        {
28682          "vuid": "VUID-vkCreateDirectFBSurfaceEXT-pSurface-parameter",
28683          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
28684        }
28685      ]
28686    },
28687    "VkDirectFBSurfaceCreateInfoEXT": {
28688      "(VK_KHR_surface)+(VK_EXT_directfb_surface)": [
28689        {
28690          "vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-dfb-04117",
28691          "text": " <code>dfb</code> <strong class=\"purple\">must</strong> point to a valid DirectFB <code>IDirectFB</code>"
28692        },
28693        {
28694          "vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-surface-04118",
28695          "text": " <code>surface</code> <strong class=\"purple\">must</strong> point to a valid DirectFB <code>IDirectFBSurface</code>"
28696        },
28697        {
28698          "vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-sType-sType",
28699          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT</code>"
28700        },
28701        {
28702          "vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-pNext-pNext",
28703          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28704        },
28705        {
28706          "vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-flags-zerobitmask",
28707          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
28708        }
28709      ]
28710    },
28711    "vkCreateImagePipeSurfaceFUCHSIA": {
28712      "(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [
28713        {
28714          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-instance-parameter",
28715          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
28716        },
28717        {
28718          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pCreateInfo-parameter",
28719          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImagePipeSurfaceCreateInfoFUCHSIA\">VkImagePipeSurfaceCreateInfoFUCHSIA</a> structure"
28720        },
28721        {
28722          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pAllocator-parameter",
28723          "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"
28724        },
28725        {
28726          "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pSurface-parameter",
28727          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
28728        }
28729      ]
28730    },
28731    "VkImagePipeSurfaceCreateInfoFUCHSIA": {
28732      "(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [
28733        {
28734          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-imagePipeHandle-00000",
28735          "text": " <code>imagePipeHandle</code> <strong class=\"purple\">must</strong> be a valid <code>zx_handle_t</code>"
28736        },
28737        {
28738          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-sType-sType",
28739          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA</code>"
28740        },
28741        {
28742          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-pNext-pNext",
28743          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28744        },
28745        {
28746          "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-flags-zerobitmask",
28747          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
28748        }
28749      ]
28750    },
28751    "vkCreateStreamDescriptorSurfaceGGP": {
28752      "(VK_KHR_surface)+(VK_GGP_stream_descriptor_surface)": [
28753        {
28754          "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-instance-parameter",
28755          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
28756        },
28757        {
28758          "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pCreateInfo-parameter",
28759          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStreamDescriptorSurfaceCreateInfoGGP\">VkStreamDescriptorSurfaceCreateInfoGGP</a> structure"
28760        },
28761        {
28762          "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pAllocator-parameter",
28763          "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"
28764        },
28765        {
28766          "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pSurface-parameter",
28767          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
28768        }
28769      ]
28770    },
28771    "VkStreamDescriptorSurfaceCreateInfoGGP": {
28772      "(VK_KHR_surface)+(VK_GGP_stream_descriptor_surface)": [
28773        {
28774          "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-streamDescriptor-02681",
28775          "text": " <code>streamDescriptor</code> <strong class=\"purple\">must</strong> be a valid <code>GgpStreamDescriptor</code>"
28776        },
28777        {
28778          "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-sType-sType",
28779          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP</code>"
28780        },
28781        {
28782          "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-pNext-pNext",
28783          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28784        },
28785        {
28786          "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-flags-zerobitmask",
28787          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
28788        }
28789      ]
28790    },
28791    "vkCreateIOSSurfaceMVK": {
28792      "(VK_KHR_surface)+(VK_MVK_ios_surface)": [
28793        {
28794          "vuid": "VUID-vkCreateIOSSurfaceMVK-instance-parameter",
28795          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
28796        },
28797        {
28798          "vuid": "VUID-vkCreateIOSSurfaceMVK-pCreateInfo-parameter",
28799          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIOSSurfaceCreateInfoMVK\">VkIOSSurfaceCreateInfoMVK</a> structure"
28800        },
28801        {
28802          "vuid": "VUID-vkCreateIOSSurfaceMVK-pAllocator-parameter",
28803          "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"
28804        },
28805        {
28806          "vuid": "VUID-vkCreateIOSSurfaceMVK-pSurface-parameter",
28807          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
28808        }
28809      ]
28810    },
28811    "VkIOSSurfaceCreateInfoMVK": {
28812      "(VK_KHR_surface)+(VK_MVK_ios_surface)": [
28813        {
28814          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pView-04143",
28815          "text": " If <code>pView</code> is a <code>CAMetalLayer</code> object, it <strong class=\"purple\">must</strong> be a valid <code>CAMetalLayer</code>."
28816        },
28817        {
28818          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pView-01316",
28819          "text": " If <code>pView</code> is a <code>UIView</code> object, it <strong class=\"purple\">must</strong> be a valid <code>UIView</code>, <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> object of type <code>CAMetalLayer</code>, and <a href=\"#vkCreateIOSSurfaceMVK\">vkCreateIOSSurfaceMVK</a> <strong class=\"purple\">must</strong> be called on the main thread."
28820        },
28821        {
28822          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-sType-sType",
28823          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK</code>"
28824        },
28825        {
28826          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pNext-pNext",
28827          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28828        },
28829        {
28830          "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-flags-zerobitmask",
28831          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
28832        }
28833      ]
28834    },
28835    "vkCreateMacOSSurfaceMVK": {
28836      "(VK_KHR_surface)+(VK_MVK_macos_surface)": [
28837        {
28838          "vuid": "VUID-vkCreateMacOSSurfaceMVK-instance-parameter",
28839          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
28840        },
28841        {
28842          "vuid": "VUID-vkCreateMacOSSurfaceMVK-pCreateInfo-parameter",
28843          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMacOSSurfaceCreateInfoMVK\">VkMacOSSurfaceCreateInfoMVK</a> structure"
28844        },
28845        {
28846          "vuid": "VUID-vkCreateMacOSSurfaceMVK-pAllocator-parameter",
28847          "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"
28848        },
28849        {
28850          "vuid": "VUID-vkCreateMacOSSurfaceMVK-pSurface-parameter",
28851          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
28852        }
28853      ]
28854    },
28855    "VkMacOSSurfaceCreateInfoMVK": {
28856      "(VK_KHR_surface)+(VK_MVK_macos_surface)": [
28857        {
28858          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pView-04144",
28859          "text": " If <code>pView</code> is a <code>CAMetalLayer</code> object, it <strong class=\"purple\">must</strong> be a valid <code>CAMetalLayer</code>."
28860        },
28861        {
28862          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pView-01317",
28863          "text": " If <code>pView</code> is an <code>NSView</code> object, it <strong class=\"purple\">must</strong> be a valid <code>NSView</code>, <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> object of type <code>CAMetalLayer</code>, and <a href=\"#vkCreateMacOSSurfaceMVK\">vkCreateMacOSSurfaceMVK</a> <strong class=\"purple\">must</strong> be called on the main thread."
28864        },
28865        {
28866          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-sType-sType",
28867          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK</code>"
28868        },
28869        {
28870          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pNext-pNext",
28871          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28872        },
28873        {
28874          "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-flags-zerobitmask",
28875          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
28876        }
28877      ]
28878    },
28879    "vkCreateViSurfaceNN": {
28880      "(VK_KHR_surface)+(VK_NN_vi_surface)": [
28881        {
28882          "vuid": "VUID-vkCreateViSurfaceNN-instance-parameter",
28883          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
28884        },
28885        {
28886          "vuid": "VUID-vkCreateViSurfaceNN-pCreateInfo-parameter",
28887          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkViSurfaceCreateInfoNN\">VkViSurfaceCreateInfoNN</a> structure"
28888        },
28889        {
28890          "vuid": "VUID-vkCreateViSurfaceNN-pAllocator-parameter",
28891          "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"
28892        },
28893        {
28894          "vuid": "VUID-vkCreateViSurfaceNN-pSurface-parameter",
28895          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
28896        }
28897      ]
28898    },
28899    "VkViSurfaceCreateInfoNN": {
28900      "(VK_KHR_surface)+(VK_NN_vi_surface)": [
28901        {
28902          "vuid": "VUID-VkViSurfaceCreateInfoNN-window-01318",
28903          "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid <code>nn</code>::<code>vi</code>::<code>NativeWindowHandle</code>"
28904        },
28905        {
28906          "vuid": "VUID-VkViSurfaceCreateInfoNN-sType-sType",
28907          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN</code>"
28908        },
28909        {
28910          "vuid": "VUID-VkViSurfaceCreateInfoNN-pNext-pNext",
28911          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28912        },
28913        {
28914          "vuid": "VUID-VkViSurfaceCreateInfoNN-flags-zerobitmask",
28915          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
28916        }
28917      ]
28918    },
28919    "vkCreateMetalSurfaceEXT": {
28920      "(VK_KHR_surface)+(VK_EXT_metal_surface)": [
28921        {
28922          "vuid": "VUID-vkCreateMetalSurfaceEXT-instance-parameter",
28923          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
28924        },
28925        {
28926          "vuid": "VUID-vkCreateMetalSurfaceEXT-pCreateInfo-parameter",
28927          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMetalSurfaceCreateInfoEXT\">VkMetalSurfaceCreateInfoEXT</a> structure"
28928        },
28929        {
28930          "vuid": "VUID-vkCreateMetalSurfaceEXT-pAllocator-parameter",
28931          "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"
28932        },
28933        {
28934          "vuid": "VUID-vkCreateMetalSurfaceEXT-pSurface-parameter",
28935          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
28936        }
28937      ]
28938    },
28939    "VkMetalSurfaceCreateInfoEXT": {
28940      "(VK_KHR_surface)+(VK_EXT_metal_surface)": [
28941        {
28942          "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-sType-sType",
28943          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT</code>"
28944        },
28945        {
28946          "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-pNext-pNext",
28947          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
28948        },
28949        {
28950          "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-flags-zerobitmask",
28951          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
28952        }
28953      ]
28954    },
28955    "vkDestroySurfaceKHR": {
28956      "(VK_KHR_surface)": [
28957        {
28958          "vuid": "VUID-vkDestroySurfaceKHR-surface-01266",
28959          "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>"
28960        },
28961        {
28962          "vuid": "VUID-vkDestroySurfaceKHR-surface-01267",
28963          "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"
28964        },
28965        {
28966          "vuid": "VUID-vkDestroySurfaceKHR-surface-01268",
28967          "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>"
28968        },
28969        {
28970          "vuid": "VUID-vkDestroySurfaceKHR-instance-parameter",
28971          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
28972        },
28973        {
28974          "vuid": "VUID-vkDestroySurfaceKHR-surface-parameter",
28975          "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"
28976        },
28977        {
28978          "vuid": "VUID-vkDestroySurfaceKHR-pAllocator-parameter",
28979          "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"
28980        },
28981        {
28982          "vuid": "VUID-vkDestroySurfaceKHR-surface-parent",
28983          "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>"
28984        }
28985      ]
28986    },
28987    "vkGetPhysicalDeviceDisplayPropertiesKHR": {
28988      "(VK_KHR_surface)+(VK_KHR_display)": [
28989        {
28990          "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-physicalDevice-parameter",
28991          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
28992        },
28993        {
28994          "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pPropertyCount-parameter",
28995          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
28996        },
28997        {
28998          "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pProperties-parameter",
28999          "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"
29000        }
29001      ]
29002    },
29003    "vkGetPhysicalDeviceDisplayProperties2KHR": {
29004      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
29005        {
29006          "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-physicalDevice-parameter",
29007          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29008        },
29009        {
29010          "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pPropertyCount-parameter",
29011          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
29012        },
29013        {
29014          "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pProperties-parameter",
29015          "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"
29016        }
29017      ]
29018    },
29019    "VkDisplayProperties2KHR": {
29020      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
29021        {
29022          "vuid": "VUID-VkDisplayProperties2KHR-sType-sType",
29023          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR</code>"
29024        },
29025        {
29026          "vuid": "VUID-VkDisplayProperties2KHR-pNext-pNext",
29027          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29028        }
29029      ]
29030    },
29031    "vkAcquireXlibDisplayEXT": {
29032      "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [
29033        {
29034          "vuid": "VUID-vkAcquireXlibDisplayEXT-physicalDevice-parameter",
29035          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29036        },
29037        {
29038          "vuid": "VUID-vkAcquireXlibDisplayEXT-dpy-parameter",
29039          "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
29040        },
29041        {
29042          "vuid": "VUID-vkAcquireXlibDisplayEXT-display-parameter",
29043          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
29044        },
29045        {
29046          "vuid": "VUID-vkAcquireXlibDisplayEXT-display-parent",
29047          "text": " <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>"
29048        }
29049      ]
29050    },
29051    "vkGetRandROutputDisplayEXT": {
29052      "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [
29053        {
29054          "vuid": "VUID-vkGetRandROutputDisplayEXT-physicalDevice-parameter",
29055          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29056        },
29057        {
29058          "vuid": "VUID-vkGetRandROutputDisplayEXT-dpy-parameter",
29059          "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
29060        },
29061        {
29062          "vuid": "VUID-vkGetRandROutputDisplayEXT-pDisplay-parameter",
29063          "text": " <code>pDisplay</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
29064        }
29065      ]
29066    },
29067    "vkReleaseDisplayEXT": {
29068      "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)": [
29069        {
29070          "vuid": "VUID-vkReleaseDisplayEXT-physicalDevice-parameter",
29071          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29072        },
29073        {
29074          "vuid": "VUID-vkReleaseDisplayEXT-display-parameter",
29075          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
29076        },
29077        {
29078          "vuid": "VUID-vkReleaseDisplayEXT-display-parent",
29079          "text": " <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>"
29080        }
29081      ]
29082    },
29083    "vkGetPhysicalDeviceDisplayPlanePropertiesKHR": {
29084      "(VK_KHR_surface)+(VK_KHR_display)": [
29085        {
29086          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-physicalDevice-parameter",
29087          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29088        },
29089        {
29090          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pPropertyCount-parameter",
29091          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
29092        },
29093        {
29094          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pProperties-parameter",
29095          "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"
29096        }
29097      ]
29098    },
29099    "vkGetPhysicalDeviceDisplayPlaneProperties2KHR": {
29100      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
29101        {
29102          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-physicalDevice-parameter",
29103          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29104        },
29105        {
29106          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pPropertyCount-parameter",
29107          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
29108        },
29109        {
29110          "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pProperties-parameter",
29111          "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"
29112        }
29113      ]
29114    },
29115    "VkDisplayPlaneProperties2KHR": {
29116      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
29117        {
29118          "vuid": "VUID-VkDisplayPlaneProperties2KHR-sType-sType",
29119          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR</code>"
29120        },
29121        {
29122          "vuid": "VUID-VkDisplayPlaneProperties2KHR-pNext-pNext",
29123          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29124        }
29125      ]
29126    },
29127    "vkGetDisplayPlaneSupportedDisplaysKHR": {
29128      "(VK_KHR_surface)+(VK_KHR_display)": [
29129        {
29130          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-planeIndex-01249",
29131          "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>"
29132        },
29133        {
29134          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-physicalDevice-parameter",
29135          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29136        },
29137        {
29138          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplayCount-parameter",
29139          "text": " <code>pDisplayCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
29140        },
29141        {
29142          "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplays-parameter",
29143          "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"
29144        }
29145      ]
29146    },
29147    "vkGetDisplayModePropertiesKHR": {
29148      "(VK_KHR_surface)+(VK_KHR_display)": [
29149        {
29150          "vuid": "VUID-vkGetDisplayModePropertiesKHR-physicalDevice-parameter",
29151          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29152        },
29153        {
29154          "vuid": "VUID-vkGetDisplayModePropertiesKHR-display-parameter",
29155          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
29156        },
29157        {
29158          "vuid": "VUID-vkGetDisplayModePropertiesKHR-pPropertyCount-parameter",
29159          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
29160        },
29161        {
29162          "vuid": "VUID-vkGetDisplayModePropertiesKHR-pProperties-parameter",
29163          "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"
29164        },
29165        {
29166          "vuid": "VUID-vkGetDisplayModePropertiesKHR-display-parent",
29167          "text": " <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>"
29168        }
29169      ]
29170    },
29171    "vkGetDisplayModeProperties2KHR": {
29172      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
29173        {
29174          "vuid": "VUID-vkGetDisplayModeProperties2KHR-physicalDevice-parameter",
29175          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29176        },
29177        {
29178          "vuid": "VUID-vkGetDisplayModeProperties2KHR-display-parameter",
29179          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
29180        },
29181        {
29182          "vuid": "VUID-vkGetDisplayModeProperties2KHR-pPropertyCount-parameter",
29183          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
29184        },
29185        {
29186          "vuid": "VUID-vkGetDisplayModeProperties2KHR-pProperties-parameter",
29187          "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"
29188        },
29189        {
29190          "vuid": "VUID-vkGetDisplayModeProperties2KHR-display-parent",
29191          "text": " <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>"
29192        }
29193      ]
29194    },
29195    "VkDisplayModeProperties2KHR": {
29196      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
29197        {
29198          "vuid": "VUID-VkDisplayModeProperties2KHR-sType-sType",
29199          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR</code>"
29200        },
29201        {
29202          "vuid": "VUID-VkDisplayModeProperties2KHR-pNext-pNext",
29203          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29204        }
29205      ]
29206    },
29207    "VkDisplayModeParametersKHR": {
29208      "(VK_KHR_surface)+(VK_KHR_display)": [
29209        {
29210          "vuid": "VUID-VkDisplayModeParametersKHR-width-01990",
29211          "text": " The <code>width</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
29212        },
29213        {
29214          "vuid": "VUID-VkDisplayModeParametersKHR-height-01991",
29215          "text": " The <code>height</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
29216        },
29217        {
29218          "vuid": "VUID-VkDisplayModeParametersKHR-refreshRate-01992",
29219          "text": " <code>refreshRate</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
29220        }
29221      ]
29222    },
29223    "vkCreateDisplayModeKHR": {
29224      "(VK_KHR_surface)+(VK_KHR_display)": [
29225        {
29226          "vuid": "VUID-vkCreateDisplayModeKHR-physicalDevice-parameter",
29227          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29228        },
29229        {
29230          "vuid": "VUID-vkCreateDisplayModeKHR-display-parameter",
29231          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
29232        },
29233        {
29234          "vuid": "VUID-vkCreateDisplayModeKHR-pCreateInfo-parameter",
29235          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayModeCreateInfoKHR\">VkDisplayModeCreateInfoKHR</a> structure"
29236        },
29237        {
29238          "vuid": "VUID-vkCreateDisplayModeKHR-pAllocator-parameter",
29239          "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"
29240        },
29241        {
29242          "vuid": "VUID-vkCreateDisplayModeKHR-pMode-parameter",
29243          "text": " <code>pMode</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle"
29244        },
29245        {
29246          "vuid": "VUID-vkCreateDisplayModeKHR-display-parent",
29247          "text": " <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>"
29248        }
29249      ]
29250    },
29251    "VkDisplayModeCreateInfoKHR": {
29252      "(VK_KHR_surface)+(VK_KHR_display)": [
29253        {
29254          "vuid": "VUID-VkDisplayModeCreateInfoKHR-sType-sType",
29255          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR</code>"
29256        },
29257        {
29258          "vuid": "VUID-VkDisplayModeCreateInfoKHR-pNext-pNext",
29259          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29260        },
29261        {
29262          "vuid": "VUID-VkDisplayModeCreateInfoKHR-flags-zerobitmask",
29263          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
29264        },
29265        {
29266          "vuid": "VUID-VkDisplayModeCreateInfoKHR-parameters-parameter",
29267          "text": " <code>parameters</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeParametersKHR\">VkDisplayModeParametersKHR</a> structure"
29268        }
29269      ]
29270    },
29271    "vkGetDisplayPlaneCapabilitiesKHR": {
29272      "(VK_KHR_surface)+(VK_KHR_display)": [
29273        {
29274          "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter",
29275          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29276        },
29277        {
29278          "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-mode-parameter",
29279          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle"
29280        },
29281        {
29282          "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-pCapabilities-parameter",
29283          "text": " <code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayPlaneCapabilitiesKHR\">VkDisplayPlaneCapabilitiesKHR</a> structure"
29284        }
29285      ]
29286    },
29287    "vkGetDisplayPlaneCapabilities2KHR": {
29288      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
29289        {
29290          "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-physicalDevice-parameter",
29291          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29292        },
29293        {
29294          "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pDisplayPlaneInfo-parameter",
29295          "text": " <code>pDisplayPlaneInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayPlaneInfo2KHR\">VkDisplayPlaneInfo2KHR</a> structure"
29296        },
29297        {
29298          "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pCapabilities-parameter",
29299          "text": " <code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayPlaneCapabilities2KHR\">VkDisplayPlaneCapabilities2KHR</a> structure"
29300        }
29301      ]
29302    },
29303    "VkDisplayPlaneInfo2KHR": {
29304      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
29305        {
29306          "vuid": "VUID-VkDisplayPlaneInfo2KHR-sType-sType",
29307          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR</code>"
29308        },
29309        {
29310          "vuid": "VUID-VkDisplayPlaneInfo2KHR-pNext-pNext",
29311          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29312        },
29313        {
29314          "vuid": "VUID-VkDisplayPlaneInfo2KHR-mode-parameter",
29315          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle"
29316        }
29317      ]
29318    },
29319    "VkDisplayPlaneCapabilities2KHR": {
29320      "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
29321        {
29322          "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-sType-sType",
29323          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR</code>"
29324        },
29325        {
29326          "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-pNext-pNext",
29327          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29328        }
29329      ]
29330    },
29331    "vkDisplayPowerControlEXT": {
29332      "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [
29333        {
29334          "vuid": "VUID-vkDisplayPowerControlEXT-device-parameter",
29335          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
29336        },
29337        {
29338          "vuid": "VUID-vkDisplayPowerControlEXT-display-parameter",
29339          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
29340        },
29341        {
29342          "vuid": "VUID-vkDisplayPowerControlEXT-pDisplayPowerInfo-parameter",
29343          "text": " <code>pDisplayPowerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayPowerInfoEXT\">VkDisplayPowerInfoEXT</a> structure"
29344        },
29345        {
29346          "vuid": "VUID-vkDisplayPowerControlEXT-commonparent",
29347          "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>"
29348        }
29349      ]
29350    },
29351    "VkDisplayPowerInfoEXT": {
29352      "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [
29353        {
29354          "vuid": "VUID-VkDisplayPowerInfoEXT-sType-sType",
29355          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT</code>"
29356        },
29357        {
29358          "vuid": "VUID-VkDisplayPowerInfoEXT-pNext-pNext",
29359          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29360        },
29361        {
29362          "vuid": "VUID-VkDisplayPowerInfoEXT-powerState-parameter",
29363          "text": " <code>powerState</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPowerStateEXT\">VkDisplayPowerStateEXT</a> value"
29364        }
29365      ]
29366    },
29367    "vkCreateDisplayPlaneSurfaceKHR": {
29368      "(VK_KHR_surface)+(VK_KHR_display)": [
29369        {
29370          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-instance-parameter",
29371          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
29372        },
29373        {
29374          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pCreateInfo-parameter",
29375          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplaySurfaceCreateInfoKHR\">VkDisplaySurfaceCreateInfoKHR</a> structure"
29376        },
29377        {
29378          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pAllocator-parameter",
29379          "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"
29380        },
29381        {
29382          "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pSurface-parameter",
29383          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
29384        }
29385      ]
29386    },
29387    "VkDisplaySurfaceCreateInfoKHR": {
29388      "(VK_KHR_surface)+(VK_KHR_display)": [
29389        {
29390          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeIndex-01252",
29391          "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>"
29392        },
29393        {
29394          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeReorderPossible-01253",
29395          "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>"
29396        },
29397        {
29398          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01254",
29399          "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"
29400        },
29401        {
29402          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01255",
29403          "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>"
29404        },
29405        {
29406          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-width-01256",
29407          "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>"
29408        },
29409        {
29410          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-sType-sType",
29411          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR</code>"
29412        },
29413        {
29414          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-pNext-pNext",
29415          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29416        },
29417        {
29418          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-flags-zerobitmask",
29419          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
29420        },
29421        {
29422          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-displayMode-parameter",
29423          "text": " <code>displayMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle"
29424        },
29425        {
29426          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-transform-parameter",
29427          "text": " <code>transform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value"
29428        },
29429        {
29430          "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-parameter",
29431          "text": " <code>alphaMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPlaneAlphaFlagBitsKHR\">VkDisplayPlaneAlphaFlagBitsKHR</a> value"
29432        }
29433      ]
29434    },
29435    "vkCreateHeadlessSurfaceEXT": {
29436      "(VK_KHR_surface)+(VK_EXT_headless_surface)": [
29437        {
29438          "vuid": "VUID-vkCreateHeadlessSurfaceEXT-instance-parameter",
29439          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
29440        },
29441        {
29442          "vuid": "VUID-vkCreateHeadlessSurfaceEXT-pCreateInfo-parameter",
29443          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkHeadlessSurfaceCreateInfoEXT\">VkHeadlessSurfaceCreateInfoEXT</a> structure"
29444        },
29445        {
29446          "vuid": "VUID-vkCreateHeadlessSurfaceEXT-pAllocator-parameter",
29447          "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"
29448        },
29449        {
29450          "vuid": "VUID-vkCreateHeadlessSurfaceEXT-pSurface-parameter",
29451          "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
29452        }
29453      ]
29454    },
29455    "VkHeadlessSurfaceCreateInfoEXT": {
29456      "(VK_KHR_surface)+(VK_EXT_headless_surface)": [
29457        {
29458          "vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-sType-sType",
29459          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT</code>"
29460        },
29461        {
29462          "vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-pNext-pNext",
29463          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29464        },
29465        {
29466          "vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-flags-zerobitmask",
29467          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
29468        }
29469      ]
29470    },
29471    "vkGetPhysicalDeviceSurfaceSupportKHR": {
29472      "(VK_KHR_surface)": [
29473        {
29474          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-queueFamilyIndex-01269",
29475          "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>"
29476        },
29477        {
29478          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter",
29479          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29480        },
29481        {
29482          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-surface-parameter",
29483          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
29484        },
29485        {
29486          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter",
29487          "text": " <code>pSupported</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBool32</code> value"
29488        },
29489        {
29490          "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent",
29491          "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>"
29492        }
29493      ]
29494    },
29495    "vkGetPhysicalDeviceWaylandPresentationSupportKHR": {
29496      "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
29497        {
29498          "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-queueFamilyIndex-01306",
29499          "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>"
29500        },
29501        {
29502          "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter",
29503          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29504        },
29505        {
29506          "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-display-parameter",
29507          "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>wl_display</code> value"
29508        }
29509      ]
29510    },
29511    "vkGetPhysicalDeviceWin32PresentationSupportKHR": {
29512      "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
29513        {
29514          "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-queueFamilyIndex-01309",
29515          "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>"
29516        },
29517        {
29518          "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter",
29519          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29520        }
29521      ]
29522    },
29523    "vkGetPhysicalDeviceXcbPresentationSupportKHR": {
29524      "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
29525        {
29526          "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-queueFamilyIndex-01312",
29527          "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>"
29528        },
29529        {
29530          "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter",
29531          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29532        },
29533        {
29534          "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-connection-parameter",
29535          "text": " <code>connection</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>xcb_connection_t</code> value"
29536        }
29537      ]
29538    },
29539    "vkGetPhysicalDeviceXlibPresentationSupportKHR": {
29540      "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
29541        {
29542          "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-queueFamilyIndex-01315",
29543          "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>"
29544        },
29545        {
29546          "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter",
29547          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29548        },
29549        {
29550          "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-dpy-parameter",
29551          "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
29552        }
29553      ]
29554    },
29555    "vkGetPhysicalDeviceDirectFBPresentationSupportEXT": {
29556      "(VK_KHR_surface)+(VK_EXT_directfb_surface)": [
29557        {
29558          "vuid": "VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-queueFamilyIndex-04119",
29559          "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>"
29560        },
29561        {
29562          "vuid": "VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-physicalDevice-parameter",
29563          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29564        },
29565        {
29566          "vuid": "VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-dfb-parameter",
29567          "text": " <code>dfb</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>IDirectFB</code> value"
29568        }
29569      ]
29570    },
29571    "vkGetPhysicalDeviceSurfaceCapabilitiesKHR": {
29572      "(VK_KHR_surface)": [
29573        {
29574          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter",
29575          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29576        },
29577        {
29578          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-parameter",
29579          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
29580        },
29581        {
29582          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-pSurfaceCapabilities-parameter",
29583          "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a> structure"
29584        },
29585        {
29586          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-commonparent",
29587          "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>"
29588        }
29589      ]
29590    },
29591    "vkGetPhysicalDeviceSurfaceCapabilities2KHR": {
29592      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive+VK_KHR_win32_surface)": [
29593        {
29594          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-02671",
29595          "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>"
29596        }
29597      ],
29598      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
29599        {
29600          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter",
29601          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29602        },
29603        {
29604          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-parameter",
29605          "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure"
29606        },
29607        {
29608          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceCapabilities-parameter",
29609          "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceCapabilities2KHR\">VkSurfaceCapabilities2KHR</a> structure"
29610        }
29611      ]
29612    },
29613    "VkPhysicalDeviceSurfaceInfo2KHR": {
29614      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_win32_surface+VK_EXT_full_screen_exclusive)": [
29615        {
29616          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-02672",
29617          "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"
29618        }
29619      ],
29620      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
29621        {
29622          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType",
29623          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR</code>"
29624        },
29625        {
29626          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext",
29627          "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>"
29628        },
29629        {
29630          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-unique",
29631          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
29632        },
29633        {
29634          "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter",
29635          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
29636        }
29637      ]
29638    },
29639    "VkSurfaceFullScreenExclusiveInfoEXT": {
29640      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)": [
29641        {
29642          "vuid": "VUID-VkSurfaceFullScreenExclusiveInfoEXT-sType-sType",
29643          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT</code>"
29644        },
29645        {
29646          "vuid": "VUID-VkSurfaceFullScreenExclusiveInfoEXT-fullScreenExclusive-parameter",
29647          "text": " <code>fullScreenExclusive</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFullScreenExclusiveEXT\">VkFullScreenExclusiveEXT</a> value"
29648        }
29649      ]
29650    },
29651    "VkSurfaceFullScreenExclusiveWin32InfoEXT": {
29652      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)+(VK_KHR_win32_surface)": [
29653        {
29654          "vuid": "VUID-VkSurfaceFullScreenExclusiveWin32InfoEXT-hmonitor-02673",
29655          "text": " <code>hmonitor</code> <strong class=\"purple\">must</strong> be a valid <code>HMONITOR</code>"
29656        },
29657        {
29658          "vuid": "VUID-VkSurfaceFullScreenExclusiveWin32InfoEXT-sType-sType",
29659          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT</code>"
29660        }
29661      ]
29662    },
29663    "VkSurfaceCapabilities2KHR": {
29664      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
29665        {
29666          "vuid": "VUID-VkSurfaceCapabilities2KHR-sType-sType",
29667          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR</code>"
29668        },
29669        {
29670          "vuid": "VUID-VkSurfaceCapabilities2KHR-pNext-pNext",
29671          "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>"
29672        },
29673        {
29674          "vuid": "VUID-VkSurfaceCapabilities2KHR-sType-unique",
29675          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
29676        }
29677      ]
29678    },
29679    "VkSurfaceProtectedCapabilitiesKHR": {
29680      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_surface_protected_capabilities)": [
29681        {
29682          "vuid": "VUID-VkSurfaceProtectedCapabilitiesKHR-sType-sType",
29683          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR</code>"
29684        }
29685      ]
29686    },
29687    "VkSharedPresentSurfaceCapabilitiesKHR": {
29688      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_shared_presentable_image)": [
29689        {
29690          "vuid": "VUID-VkSharedPresentSurfaceCapabilitiesKHR-sType-sType",
29691          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR</code>"
29692        }
29693      ]
29694    },
29695    "VkDisplayNativeHdrSurfaceCapabilitiesAMD": {
29696      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_AMD_display_native_hdr)": [
29697        {
29698          "vuid": "VUID-VkDisplayNativeHdrSurfaceCapabilitiesAMD-sType-sType",
29699          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD</code>"
29700        }
29701      ]
29702    },
29703    "VkSurfaceCapabilitiesFullScreenExclusiveEXT": {
29704      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)": [
29705        {
29706          "vuid": "VUID-VkSurfaceCapabilitiesFullScreenExclusiveEXT-sType-sType",
29707          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT</code>"
29708        }
29709      ]
29710    },
29711    "vkGetPhysicalDeviceSurfaceCapabilities2EXT": {
29712      "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
29713        {
29714          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-physicalDevice-parameter",
29715          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29716        },
29717        {
29718          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-parameter",
29719          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
29720        },
29721        {
29722          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-pSurfaceCapabilities-parameter",
29723          "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceCapabilities2EXT\">VkSurfaceCapabilities2EXT</a> structure"
29724        },
29725        {
29726          "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-commonparent",
29727          "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>"
29728        }
29729      ]
29730    },
29731    "VkSurfaceCapabilities2EXT": {
29732      "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
29733        {
29734          "vuid": "VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246",
29735          "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>"
29736        },
29737        {
29738          "vuid": "VUID-VkSurfaceCapabilities2EXT-sType-sType",
29739          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT</code>"
29740        },
29741        {
29742          "vuid": "VUID-VkSurfaceCapabilities2EXT-pNext-pNext",
29743          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29744        }
29745      ]
29746    },
29747    "vkGetPhysicalDeviceSurfaceFormatsKHR": {
29748      "(VK_KHR_surface)": [
29749        {
29750          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-02739",
29751          "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"
29752        },
29753        {
29754          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter",
29755          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29756        },
29757        {
29758          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-parameter",
29759          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
29760        },
29761        {
29762          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormatCount-parameter",
29763          "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
29764        },
29765        {
29766          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormats-parameter",
29767          "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"
29768        },
29769        {
29770          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-commonparent",
29771          "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>"
29772        }
29773      ]
29774    },
29775    "vkGetPhysicalDeviceSurfaceFormats2KHR": {
29776      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
29777        {
29778          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-02740",
29779          "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"
29780        },
29781        {
29782          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-physicalDevice-parameter",
29783          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29784        },
29785        {
29786          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-parameter",
29787          "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure"
29788        },
29789        {
29790          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormatCount-parameter",
29791          "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
29792        },
29793        {
29794          "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormats-parameter",
29795          "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"
29796        }
29797      ]
29798    },
29799    "VkSurfaceFormat2KHR": {
29800      "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
29801        {
29802          "vuid": "VUID-VkSurfaceFormat2KHR-sType-sType",
29803          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR</code>"
29804        },
29805        {
29806          "vuid": "VUID-VkSurfaceFormat2KHR-pNext-pNext",
29807          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29808        }
29809      ]
29810    },
29811    "vkGetPhysicalDeviceSurfacePresentModesKHR": {
29812      "(VK_KHR_surface)": [
29813        {
29814          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter",
29815          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29816        },
29817        {
29818          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-parameter",
29819          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
29820        },
29821        {
29822          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModeCount-parameter",
29823          "text": " <code>pPresentModeCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
29824        },
29825        {
29826          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModes-parameter",
29827          "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"
29828        },
29829        {
29830          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-commonparent",
29831          "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>"
29832        }
29833      ]
29834    },
29835    "vkGetPhysicalDeviceSurfacePresentModes2EXT": {
29836      "(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [
29837        {
29838          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-physicalDevice-parameter",
29839          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29840        },
29841        {
29842          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-parameter",
29843          "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure"
29844        },
29845        {
29846          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModeCount-parameter",
29847          "text": " <code>pPresentModeCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
29848        },
29849        {
29850          "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModes-parameter",
29851          "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"
29852        }
29853      ]
29854    },
29855    "vkAcquireFullScreenExclusiveModeEXT": {
29856      "(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [
29857        {
29858          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02674",
29859          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
29860        },
29861        {
29862          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02675",
29863          "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>"
29864        },
29865        {
29866          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02676",
29867          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not currently have exclusive full-screen access"
29868        },
29869        {
29870          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-device-parameter",
29871          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
29872        },
29873        {
29874          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-parameter",
29875          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
29876        },
29877        {
29878          "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-commonparent",
29879          "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>"
29880        }
29881      ]
29882    },
29883    "vkReleaseFullScreenExclusiveModeEXT": {
29884      "(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [
29885        {
29886          "vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02677",
29887          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
29888        },
29889        {
29890          "vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02678",
29891          "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>"
29892        }
29893      ]
29894    },
29895    "vkGetDeviceGroupPresentCapabilitiesKHR": {
29896      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
29897        {
29898          "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-device-parameter",
29899          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
29900        },
29901        {
29902          "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-pDeviceGroupPresentCapabilities-parameter",
29903          "text": " <code>pDeviceGroupPresentCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a> structure"
29904        }
29905      ]
29906    },
29907    "VkDeviceGroupPresentCapabilitiesKHR": {
29908      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
29909        {
29910          "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-sType-sType",
29911          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR</code>"
29912        },
29913        {
29914          "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-pNext-pNext",
29915          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
29916        }
29917      ]
29918    },
29919    "vkGetDeviceGroupSurfacePresentModesKHR": {
29920      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
29921        {
29922          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-device-parameter",
29923          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
29924        },
29925        {
29926          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-parameter",
29927          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
29928        },
29929        {
29930          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-pModes-parameter",
29931          "text": " <code>pModes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentModeFlagsKHR\">VkDeviceGroupPresentModeFlagsKHR</a> value"
29932        },
29933        {
29934          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent",
29935          "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>"
29936        }
29937      ]
29938    },
29939    "vkGetDeviceGroupSurfacePresentModes2EXT": {
29940      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_EXT_full_screen_exclusive)": [
29941        {
29942          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-device-parameter",
29943          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
29944        },
29945        {
29946          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pSurfaceInfo-parameter",
29947          "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure"
29948        },
29949        {
29950          "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pModes-parameter",
29951          "text": " <code>pModes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentModeFlagsKHR\">VkDeviceGroupPresentModeFlagsKHR</a> value"
29952        }
29953      ]
29954    },
29955    "vkGetPhysicalDevicePresentRectanglesKHR": {
29956      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
29957        {
29958          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter",
29959          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
29960        },
29961        {
29962          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter",
29963          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
29964        },
29965        {
29966          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRectCount-parameter",
29967          "text": " <code>pRectCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
29968        },
29969        {
29970          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter",
29971          "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"
29972        },
29973        {
29974          "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent",
29975          "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>"
29976        }
29977      ]
29978    },
29979    "vkGetRefreshCycleDurationGOOGLE": {
29980      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
29981        {
29982          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter",
29983          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
29984        },
29985        {
29986          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-swapchain-parameter",
29987          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
29988        },
29989        {
29990          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-pDisplayTimingProperties-parameter",
29991          "text": " <code>pDisplayTimingProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkRefreshCycleDurationGOOGLE\">VkRefreshCycleDurationGOOGLE</a> structure"
29992        },
29993        {
29994          "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-commonparent",
29995          "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>"
29996        }
29997      ]
29998    },
29999    "vkGetPastPresentationTimingGOOGLE": {
30000      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
30001        {
30002          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-device-parameter",
30003          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30004        },
30005        {
30006          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-swapchain-parameter",
30007          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
30008        },
30009        {
30010          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimingCount-parameter",
30011          "text": " <code>pPresentationTimingCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
30012        },
30013        {
30014          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimings-parameter",
30015          "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"
30016        },
30017        {
30018          "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-commonparent",
30019          "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>"
30020        }
30021      ]
30022    },
30023    "vkGetSwapchainStatusKHR": {
30024      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
30025        {
30026          "vuid": "VUID-vkGetSwapchainStatusKHR-device-parameter",
30027          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30028        },
30029        {
30030          "vuid": "VUID-vkGetSwapchainStatusKHR-swapchain-parameter",
30031          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
30032        },
30033        {
30034          "vuid": "VUID-vkGetSwapchainStatusKHR-commonparent",
30035          "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>"
30036        }
30037      ]
30038    },
30039    "vkCreateSwapchainKHR": {
30040      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
30041        {
30042          "vuid": "VUID-vkCreateSwapchainKHR-device-parameter",
30043          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30044        },
30045        {
30046          "vuid": "VUID-vkCreateSwapchainKHR-pCreateInfo-parameter",
30047          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a> structure"
30048        },
30049        {
30050          "vuid": "VUID-vkCreateSwapchainKHR-pAllocator-parameter",
30051          "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"
30052        },
30053        {
30054          "vuid": "VUID-vkCreateSwapchainKHR-pSwapchain-parameter",
30055          "text": " <code>pSwapchain</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
30056        }
30057      ]
30058    },
30059    "VkSwapchainCreateInfoKHR": {
30060      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
30061        {
30062          "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-01270",
30063          "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>"
30064        },
30065        {
30066          "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01272",
30067          "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"
30068        },
30069        {
30070          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01273",
30071          "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"
30072        },
30073        {
30074          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01274",
30075          "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"
30076        },
30077        {
30078          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01689",
30079          "text": " <code>imageExtent</code> members <code>width</code> and <code>height</code> <strong class=\"purple\">must</strong> both be non-zero"
30080        },
30081        {
30082          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275",
30083          "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"
30084        },
30085        {
30086          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277",
30087          "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"
30088        },
30089        {
30090          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278",
30091          "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>"
30092        },
30093        {
30094          "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-01279",
30095          "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"
30096        },
30097        {
30098          "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-01280",
30099          "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"
30100        },
30101        {
30102          "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01281",
30103          "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"
30104        },
30105        {
30106          "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933",
30107          "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>"
30108        },
30109        {
30110          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01778",
30111          "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>"
30112        },
30113        {
30114          "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-sType",
30115          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR</code>"
30116        },
30117        {
30118          "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-pNext",
30119          "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>"
30120        },
30121        {
30122          "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-unique",
30123          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
30124        },
30125        {
30126          "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-parameter",
30127          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSwapchainCreateFlagBitsKHR\">VkSwapchainCreateFlagBitsKHR</a> values"
30128        },
30129        {
30130          "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-parameter",
30131          "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
30132        },
30133        {
30134          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter",
30135          "text": " <code>imageFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
30136        },
30137        {
30138          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter",
30139          "text": " <code>imageColorSpace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkColorSpaceKHR\">VkColorSpaceKHR</a> value"
30140        },
30141        {
30142          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter",
30143          "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
30144        },
30145        {
30146          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask",
30147          "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
30148        },
30149        {
30150          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter",
30151          "text": " <code>imageSharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
30152        },
30153        {
30154          "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-parameter",
30155          "text": " <code>preTransform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value"
30156        },
30157        {
30158          "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter",
30159          "text": " <code>compositeAlpha</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompositeAlphaFlagBitsKHR\">VkCompositeAlphaFlagBitsKHR</a> value"
30160        },
30161        {
30162          "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-parameter",
30163          "text": " <code>presentMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> value"
30164        },
30165        {
30166          "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parameter",
30167          "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"
30168        },
30169        {
30170          "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parent",
30171          "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>"
30172        },
30173        {
30174          "vuid": "VUID-VkSwapchainCreateInfoKHR-commonparent",
30175          "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>"
30176        }
30177      ],
30178      "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [
30179        {
30180          "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01271",
30181          "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"
30182        },
30183        {
30184          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01276",
30185          "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"
30186        }
30187      ],
30188      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
30189        {
30190          "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-02839",
30191          "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"
30192        },
30193        {
30194          "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01383",
30195          "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>"
30196        },
30197        {
30198          "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01427",
30199          "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>"
30200        },
30201        {
30202          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01384",
30203          "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>"
30204        }
30205      ],
30206      "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
30207        {
30208          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01393",
30209          "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>"
30210        }
30211      ],
30212      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
30213        {
30214          "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428",
30215          "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>"
30216        }
30217      ],
30218      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
30219        {
30220          "vuid": "VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429",
30221          "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>"
30222        }
30223      ],
30224      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_swapchain_mutable_format)": [
30225        {
30226          "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03168",
30227          "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>"
30228        },
30229        {
30230          "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-04099",
30231          "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>"
30232        },
30233        {
30234          "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-04100",
30235          "text": " If <code>flags</code> does 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>"
30236        }
30237      ],
30238      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_surface_protected_capabilities)": [
30239        {
30240          "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03187",
30241          "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>"
30242        }
30243      ],
30244      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_full_screen_exclusive+VK_KHR_win32_surface)": [
30245        {
30246          "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-02679",
30247          "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"
30248        }
30249      ]
30250    },
30251    "VkDeviceGroupSwapchainCreateInfoKHR": {
30252      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
30253        {
30254          "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-sType-sType",
30255          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR</code>"
30256        },
30257        {
30258          "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter",
30259          "text": " <code>modes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> values"
30260        },
30261        {
30262          "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask",
30263          "text": " <code>modes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
30264        }
30265      ]
30266    },
30267    "VkSwapchainDisplayNativeHdrCreateInfoAMD": {
30268      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_AMD_display_native_hdr)": [
30269        {
30270          "vuid": "VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-sType-sType",
30271          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD</code>"
30272        },
30273        {
30274          "vuid": "VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-localDimmingEnable-04449",
30275          "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"
30276        }
30277      ]
30278    },
30279    "vkSetLocalDimmingAMD": {
30280      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_AMD_display_native_hdr)": [
30281        {
30282          "vuid": "VUID-vkSetLocalDimmingAMD-device-parameter",
30283          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30284        },
30285        {
30286          "vuid": "VUID-vkSetLocalDimmingAMD-swapChain-parameter",
30287          "text": " <code>swapChain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
30288        },
30289        {
30290          "vuid": "VUID-vkSetLocalDimmingAMD-commonparent",
30291          "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>"
30292        },
30293        {
30294          "vuid": "VUID-vkSetLocalDimmingAMD-XXXXX",
30295          "text": " It is only valid to call <a href=\"#vkSetLocalDimmingAMD\">vkSetLocalDimmingAMD</a> if <a href=\"#VkDisplayNativeHdrSurfaceCapabilitiesAMD\">VkDisplayNativeHdrSurfaceCapabilitiesAMD</a>::<code>localDimmingSupport</code> is supported"
30296        }
30297      ]
30298    },
30299    "VkSwapchainCounterCreateInfoEXT": {
30300      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
30301        {
30302          "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244",
30303          "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>"
30304        },
30305        {
30306          "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-sType-sType",
30307          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT</code>"
30308        },
30309        {
30310          "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-parameter",
30311          "text": " <code>surfaceCounters</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> values"
30312        }
30313      ]
30314    },
30315    "vkGetSwapchainCounterEXT": {
30316      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
30317        {
30318          "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-01245",
30319          "text": " One or more present commands on <code>swapchain</code> <strong class=\"purple\">must</strong> have been processed by the presentation engine"
30320        },
30321        {
30322          "vuid": "VUID-vkGetSwapchainCounterEXT-device-parameter",
30323          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30324        },
30325        {
30326          "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-parameter",
30327          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
30328        },
30329        {
30330          "vuid": "VUID-vkGetSwapchainCounterEXT-counter-parameter",
30331          "text": " <code>counter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> value"
30332        },
30333        {
30334          "vuid": "VUID-vkGetSwapchainCounterEXT-pCounterValue-parameter",
30335          "text": " <code>pCounterValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
30336        },
30337        {
30338          "vuid": "VUID-vkGetSwapchainCounterEXT-commonparent",
30339          "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>"
30340        }
30341      ]
30342    },
30343    "vkDestroySwapchainKHR": {
30344      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
30345        {
30346          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01282",
30347          "text": " All uses of presentable images acquired from <code>swapchain</code> <strong class=\"purple\">must</strong> have completed execution"
30348        },
30349        {
30350          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01283",
30351          "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"
30352        },
30353        {
30354          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01284",
30355          "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>"
30356        },
30357        {
30358          "vuid": "VUID-vkDestroySwapchainKHR-device-parameter",
30359          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30360        },
30361        {
30362          "vuid": "VUID-vkDestroySwapchainKHR-swapchain-parameter",
30363          "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"
30364        },
30365        {
30366          "vuid": "VUID-vkDestroySwapchainKHR-pAllocator-parameter",
30367          "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"
30368        },
30369        {
30370          "vuid": "VUID-vkDestroySwapchainKHR-commonparent",
30371          "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>"
30372        }
30373      ]
30374    },
30375    "vkCreateSharedSwapchainsKHR": {
30376      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
30377        {
30378          "vuid": "VUID-vkCreateSharedSwapchainsKHR-device-parameter",
30379          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30380        },
30381        {
30382          "vuid": "VUID-vkCreateSharedSwapchainsKHR-pCreateInfos-parameter",
30383          "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"
30384        },
30385        {
30386          "vuid": "VUID-vkCreateSharedSwapchainsKHR-pAllocator-parameter",
30387          "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"
30388        },
30389        {
30390          "vuid": "VUID-vkCreateSharedSwapchainsKHR-pSwapchains-parameter",
30391          "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"
30392        },
30393        {
30394          "vuid": "VUID-vkCreateSharedSwapchainsKHR-swapchainCount-arraylength",
30395          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
30396        }
30397      ]
30398    },
30399    "vkGetSwapchainImagesKHR": {
30400      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
30401        {
30402          "vuid": "VUID-vkGetSwapchainImagesKHR-device-parameter",
30403          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30404        },
30405        {
30406          "vuid": "VUID-vkGetSwapchainImagesKHR-swapchain-parameter",
30407          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
30408        },
30409        {
30410          "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImageCount-parameter",
30411          "text": " <code>pSwapchainImageCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
30412        },
30413        {
30414          "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImages-parameter",
30415          "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"
30416        },
30417        {
30418          "vuid": "VUID-vkGetSwapchainImagesKHR-commonparent",
30419          "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>"
30420        }
30421      ]
30422    },
30423    "vkAcquireNextImageKHR": {
30424      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
30425        {
30426          "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01285",
30427          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
30428        },
30429        {
30430          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01286",
30431          "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled"
30432        },
30433        {
30434          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01779",
30435          "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"
30436        },
30437        {
30438          "vuid": "VUID-vkAcquireNextImageKHR-fence-01287",
30439          "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"
30440        },
30441        {
30442          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01780",
30443          "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>"
30444        },
30445        {
30446          "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01802",
30447          "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>"
30448        },
30449        {
30450          "vuid": "VUID-vkAcquireNextImageKHR-device-parameter",
30451          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30452        },
30453        {
30454          "vuid": "VUID-vkAcquireNextImageKHR-swapchain-parameter",
30455          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
30456        },
30457        {
30458          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parameter",
30459          "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"
30460        },
30461        {
30462          "vuid": "VUID-vkAcquireNextImageKHR-fence-parameter",
30463          "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"
30464        },
30465        {
30466          "vuid": "VUID-vkAcquireNextImageKHR-pImageIndex-parameter",
30467          "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
30468        },
30469        {
30470          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parent",
30471          "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>"
30472        },
30473        {
30474          "vuid": "VUID-vkAcquireNextImageKHR-fence-parent",
30475          "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>"
30476        },
30477        {
30478          "vuid": "VUID-vkAcquireNextImageKHR-commonparent",
30479          "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>"
30480        }
30481      ],
30482      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
30483        {
30484          "vuid": "VUID-vkAcquireNextImageKHR-semaphore-03265",
30485          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>"
30486        }
30487      ]
30488    },
30489    "vkAcquireNextImage2KHR": {
30490      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
30491        {
30492          "vuid": "VUID-vkAcquireNextImage2KHR-swapchain-01803",
30493          "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>"
30494        },
30495        {
30496          "vuid": "VUID-vkAcquireNextImage2KHR-device-parameter",
30497          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30498        },
30499        {
30500          "vuid": "VUID-vkAcquireNextImage2KHR-pAcquireInfo-parameter",
30501          "text": " <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAcquireNextImageInfoKHR\">VkAcquireNextImageInfoKHR</a> structure"
30502        },
30503        {
30504          "vuid": "VUID-vkAcquireNextImage2KHR-pImageIndex-parameter",
30505          "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
30506        }
30507      ]
30508    },
30509    "VkAcquireNextImageInfoKHR": {
30510      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
30511        {
30512          "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-01675",
30513          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
30514        },
30515        {
30516          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01288",
30517          "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled"
30518        },
30519        {
30520          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01781",
30521          "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"
30522        },
30523        {
30524          "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-01289",
30525          "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"
30526        },
30527        {
30528          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01782",
30529          "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>"
30530        },
30531        {
30532          "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01290",
30533          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask"
30534        },
30535        {
30536          "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01291",
30537          "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
30538        },
30539        {
30540          "vuid": "VUID-VkAcquireNextImageInfoKHR-sType-sType",
30541          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR</code>"
30542        },
30543        {
30544          "vuid": "VUID-VkAcquireNextImageInfoKHR-pNext-pNext",
30545          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
30546        },
30547        {
30548          "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-parameter",
30549          "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle"
30550        },
30551        {
30552          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-parameter",
30553          "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"
30554        },
30555        {
30556          "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-parameter",
30557          "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"
30558        },
30559        {
30560          "vuid": "VUID-VkAcquireNextImageInfoKHR-commonparent",
30561          "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>"
30562        }
30563      ],
30564      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
30565        {
30566          "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-03266",
30567          "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>"
30568        }
30569      ]
30570    },
30571    "vkQueuePresentKHR": {
30572      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
30573        {
30574          "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01292",
30575          "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>"
30576        },
30577        {
30578          "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01294",
30579          "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"
30580        },
30581        {
30582          "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01295",
30583          "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"
30584        },
30585        {
30586          "vuid": "VUID-vkQueuePresentKHR-queue-parameter",
30587          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
30588        },
30589        {
30590          "vuid": "VUID-vkQueuePresentKHR-pPresentInfo-parameter",
30591          "text": " <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPresentInfoKHR\">VkPresentInfoKHR</a> structure"
30592        }
30593      ],
30594      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
30595        {
30596          "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01293",
30597          "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"
30598        }
30599      ],
30600      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
30601        {
30602          "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-03267",
30603          "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>"
30604        },
30605        {
30606          "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-03268",
30607          "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"
30608        }
30609      ]
30610    },
30611    "VkPresentInfoKHR": {
30612      "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [
30613        {
30614          "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01296",
30615          "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>"
30616        }
30617      ],
30618      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
30619        {
30620          "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01430",
30621          "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>"
30622        }
30623      ],
30624      "(VK_KHR_surface)+(VK_KHR_swapchain)": [
30625        {
30626          "vuid": "VUID-VkPresentInfoKHR-sType-sType",
30627          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_INFO_KHR</code>"
30628        },
30629        {
30630          "vuid": "VUID-VkPresentInfoKHR-pNext-pNext",
30631          "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>"
30632        },
30633        {
30634          "vuid": "VUID-VkPresentInfoKHR-sType-unique",
30635          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
30636        },
30637        {
30638          "vuid": "VUID-VkPresentInfoKHR-pWaitSemaphores-parameter",
30639          "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"
30640        },
30641        {
30642          "vuid": "VUID-VkPresentInfoKHR-pSwapchains-parameter",
30643          "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"
30644        },
30645        {
30646          "vuid": "VUID-VkPresentInfoKHR-pImageIndices-parameter",
30647          "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"
30648        },
30649        {
30650          "vuid": "VUID-VkPresentInfoKHR-pResults-parameter",
30651          "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"
30652        },
30653        {
30654          "vuid": "VUID-VkPresentInfoKHR-swapchainCount-arraylength",
30655          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
30656        },
30657        {
30658          "vuid": "VUID-VkPresentInfoKHR-commonparent",
30659          "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>"
30660        }
30661      ]
30662    },
30663    "VkPresentRegionsKHR": {
30664      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
30665        {
30666          "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-01260",
30667          "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"
30668        },
30669        {
30670          "vuid": "VUID-VkPresentRegionsKHR-sType-sType",
30671          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR</code>"
30672        },
30673        {
30674          "vuid": "VUID-VkPresentRegionsKHR-pRegions-parameter",
30675          "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"
30676        },
30677        {
30678          "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-arraylength",
30679          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
30680        }
30681      ]
30682    },
30683    "VkPresentRegionKHR": {
30684      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
30685        {
30686          "vuid": "VUID-VkPresentRegionKHR-pRectangles-parameter",
30687          "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"
30688        }
30689      ]
30690    },
30691    "VkRectLayerKHR": {
30692      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
30693        {
30694          "vuid": "VUID-VkRectLayerKHR-offset-01261",
30695          "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>"
30696        },
30697        {
30698          "vuid": "VUID-VkRectLayerKHR-layer-01262",
30699          "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>"
30700        }
30701      ]
30702    },
30703    "VkDisplayPresentInfoKHR": {
30704      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
30705        {
30706          "vuid": "VUID-VkDisplayPresentInfoKHR-srcRect-01257",
30707          "text": " <code>srcRect</code> <strong class=\"purple\">must</strong> specify a rectangular region that is a subset of the image being presented"
30708        },
30709        {
30710          "vuid": "VUID-VkDisplayPresentInfoKHR-dstRect-01258",
30711          "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"
30712        },
30713        {
30714          "vuid": "VUID-VkDisplayPresentInfoKHR-persistentContent-01259",
30715          "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>"
30716        },
30717        {
30718          "vuid": "VUID-VkDisplayPresentInfoKHR-sType-sType",
30719          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR</code>"
30720        }
30721      ]
30722    },
30723    "VkDeviceGroupPresentInfoKHR": {
30724      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
30725        {
30726          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-swapchainCount-01297",
30727          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> equal <code>0</code> or <a href=\"#VkPresentInfoKHR\">VkPresentInfoKHR</a>::<code>swapchainCount</code>"
30728        },
30729        {
30730          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01298",
30731          "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"
30732        },
30733        {
30734          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01299",
30735          "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>"
30736        },
30737        {
30738          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01300",
30739          "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>"
30740        },
30741        {
30742          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01301",
30743          "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"
30744        },
30745        {
30746          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-01302",
30747          "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"
30748        },
30749        {
30750          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01303",
30751          "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>"
30752        },
30753        {
30754          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-sType-sType",
30755          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR</code>"
30756        },
30757        {
30758          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter",
30759          "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"
30760        },
30761        {
30762          "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-parameter",
30763          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> value"
30764        }
30765      ]
30766    },
30767    "VkPresentTimesInfoGOOGLE": {
30768      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
30769        {
30770          "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-01247",
30771          "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"
30772        },
30773        {
30774          "vuid": "VUID-VkPresentTimesInfoGOOGLE-sType-sType",
30775          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE</code>"
30776        },
30777        {
30778          "vuid": "VUID-VkPresentTimesInfoGOOGLE-pTimes-parameter",
30779          "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"
30780        },
30781        {
30782          "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-arraylength",
30783          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
30784        }
30785      ]
30786    },
30787    "VkPresentFrameTokenGGP": {
30788      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GGP_frame_token)": [
30789        {
30790          "vuid": "VUID-VkPresentFrameTokenGGP-frameToken-02680",
30791          "text": " <code>frameToken</code> <strong class=\"purple\">must</strong> be a valid <code>GgpFrameToken</code>"
30792        },
30793        {
30794          "vuid": "VUID-VkPresentFrameTokenGGP-sType-sType",
30795          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP</code>"
30796        }
30797      ]
30798    },
30799    "vkSetHdrMetadataEXT": {
30800      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [
30801        {
30802          "vuid": "VUID-vkSetHdrMetadataEXT-device-parameter",
30803          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30804        },
30805        {
30806          "vuid": "VUID-vkSetHdrMetadataEXT-pSwapchains-parameter",
30807          "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"
30808        },
30809        {
30810          "vuid": "VUID-vkSetHdrMetadataEXT-pMetadata-parameter",
30811          "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"
30812        },
30813        {
30814          "vuid": "VUID-vkSetHdrMetadataEXT-swapchainCount-arraylength",
30815          "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
30816        },
30817        {
30818          "vuid": "VUID-vkSetHdrMetadataEXT-commonparent",
30819          "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>"
30820        }
30821      ]
30822    },
30823    "VkHdrMetadataEXT": {
30824      "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [
30825        {
30826          "vuid": "VUID-VkHdrMetadataEXT-sType-sType",
30827          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_HDR_METADATA_EXT</code>"
30828        },
30829        {
30830          "vuid": "VUID-VkHdrMetadataEXT-pNext-pNext",
30831          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
30832        }
30833      ]
30834    },
30835    "VkDeferredOperationInfoKHR": {
30836      "(VK_KHR_deferred_host_operations)": [
30837        {
30838          "vuid": "VUID-VkDeferredOperationInfoKHR-operationHandle-03433",
30839          "text": " Any previous deferred operation that was associated with <code>operationHandle</code> <strong class=\"purple\">must</strong> be complete"
30840        },
30841        {
30842          "vuid": "VUID-VkDeferredOperationInfoKHR-sType-sType",
30843          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR</code>"
30844        }
30845      ]
30846    },
30847    "vkCreateDeferredOperationKHR": {
30848      "(VK_KHR_deferred_host_operations)": [
30849        {
30850          "vuid": "VUID-vkCreateDeferredOperationKHR-device-parameter",
30851          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30852        },
30853        {
30854          "vuid": "VUID-vkCreateDeferredOperationKHR-pAllocator-parameter",
30855          "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"
30856        },
30857        {
30858          "vuid": "VUID-vkCreateDeferredOperationKHR-pDeferredOperation-parameter",
30859          "text": " <code>pDeferredOperation</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
30860        }
30861      ]
30862    },
30863    "vkDeferredOperationJoinKHR": {
30864      "(VK_KHR_deferred_host_operations)": [
30865        {
30866          "vuid": "VUID-vkDeferredOperationJoinKHR-device-parameter",
30867          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30868        },
30869        {
30870          "vuid": "VUID-vkDeferredOperationJoinKHR-operation-parameter",
30871          "text": " <code>operation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
30872        },
30873        {
30874          "vuid": "VUID-vkDeferredOperationJoinKHR-operation-parent",
30875          "text": " <code>operation</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
30876        }
30877      ]
30878    },
30879    "vkDestroyDeferredOperationKHR": {
30880      "(VK_KHR_deferred_host_operations)": [
30881        {
30882          "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03434",
30883          "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"
30884        },
30885        {
30886          "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03435",
30887          "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>"
30888        },
30889        {
30890          "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03436",
30891          "text": " <code>operation</code> <strong class=\"purple\">must</strong> be completed"
30892        },
30893        {
30894          "vuid": "VUID-vkDestroyDeferredOperationKHR-device-parameter",
30895          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30896        },
30897        {
30898          "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-parameter",
30899          "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"
30900        },
30901        {
30902          "vuid": "VUID-vkDestroyDeferredOperationKHR-pAllocator-parameter",
30903          "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"
30904        },
30905        {
30906          "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-parent",
30907          "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>"
30908        }
30909      ]
30910    },
30911    "vkGetDeferredOperationMaxConcurrencyKHR": {
30912      "(VK_KHR_deferred_host_operations)": [
30913        {
30914          "vuid": "VUID-vkGetDeferredOperationMaxConcurrencyKHR-device-parameter",
30915          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30916        },
30917        {
30918          "vuid": "VUID-vkGetDeferredOperationMaxConcurrencyKHR-operation-parameter",
30919          "text": " <code>operation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
30920        },
30921        {
30922          "vuid": "VUID-vkGetDeferredOperationMaxConcurrencyKHR-operation-parent",
30923          "text": " <code>operation</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
30924        }
30925      ]
30926    },
30927    "vkGetDeferredOperationResultKHR": {
30928      "(VK_KHR_deferred_host_operations)": [
30929        {
30930          "vuid": "VUID-vkGetDeferredOperationResultKHR-device-parameter",
30931          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30932        },
30933        {
30934          "vuid": "VUID-vkGetDeferredOperationResultKHR-operation-parameter",
30935          "text": " <code>operation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle"
30936        },
30937        {
30938          "vuid": "VUID-vkGetDeferredOperationResultKHR-operation-parent",
30939          "text": " <code>operation</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
30940        }
30941      ]
30942    },
30943    "vkCreatePrivateDataSlotEXT": {
30944      "(VK_EXT_private_data)": [
30945        {
30946          "vuid": "VUID-vkCreatePrivateDataSlotEXT-device-parameter",
30947          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30948        },
30949        {
30950          "vuid": "VUID-vkCreatePrivateDataSlotEXT-pCreateInfo-parameter",
30951          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPrivateDataSlotCreateInfoEXT\">VkPrivateDataSlotCreateInfoEXT</a> structure"
30952        },
30953        {
30954          "vuid": "VUID-vkCreatePrivateDataSlotEXT-pAllocator-parameter",
30955          "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"
30956        },
30957        {
30958          "vuid": "VUID-vkCreatePrivateDataSlotEXT-pPrivateDataSlot-parameter",
30959          "text": " <code>pPrivateDataSlot</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPrivateDataSlotEXT\">VkPrivateDataSlotEXT</a> handle"
30960        }
30961      ]
30962    },
30963    "VkPrivateDataSlotCreateInfoEXT": {
30964      "(VK_EXT_private_data)": [
30965        {
30966          "vuid": "VUID-VkPrivateDataSlotCreateInfoEXT-sType-sType",
30967          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT</code>"
30968        },
30969        {
30970          "vuid": "VUID-VkPrivateDataSlotCreateInfoEXT-pNext-pNext",
30971          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
30972        },
30973        {
30974          "vuid": "VUID-VkPrivateDataSlotCreateInfoEXT-flags-zerobitmask",
30975          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
30976        }
30977      ]
30978    },
30979    "vkDestroyPrivateDataSlotEXT": {
30980      "(VK_EXT_private_data)": [
30981        {
30982          "vuid": "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-04062",
30983          "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"
30984        },
30985        {
30986          "vuid": "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-04063",
30987          "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>"
30988        },
30989        {
30990          "vuid": "VUID-vkDestroyPrivateDataSlotEXT-device-parameter",
30991          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
30992        },
30993        {
30994          "vuid": "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parameter",
30995          "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"
30996        },
30997        {
30998          "vuid": "VUID-vkDestroyPrivateDataSlotEXT-pAllocator-parameter",
30999          "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"
31000        },
31001        {
31002          "vuid": "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parent",
31003          "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>"
31004        }
31005      ]
31006    },
31007    "vkSetPrivateDataEXT": {
31008      "(VK_EXT_private_data)": [
31009        {
31010          "vuid": "VUID-vkSetPrivateDataEXT-objectHandle-04016",
31011          "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be <code>device</code> or a child of <code>device</code>"
31012        },
31013        {
31014          "vuid": "VUID-vkSetPrivateDataEXT-objectHandle-04017",
31015          "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be a valid handle to an object of type <code>objectType</code>"
31016        },
31017        {
31018          "vuid": "VUID-vkSetPrivateDataEXT-device-parameter",
31019          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
31020        },
31021        {
31022          "vuid": "VUID-vkSetPrivateDataEXT-objectType-parameter",
31023          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
31024        },
31025        {
31026          "vuid": "VUID-vkSetPrivateDataEXT-privateDataSlot-parameter",
31027          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrivateDataSlotEXT\">VkPrivateDataSlotEXT</a> handle"
31028        },
31029        {
31030          "vuid": "VUID-vkSetPrivateDataEXT-privateDataSlot-parent",
31031          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
31032        }
31033      ]
31034    },
31035    "vkGetPrivateDataEXT": {
31036      "(VK_EXT_private_data)": [
31037        {
31038          "vuid": "VUID-vkGetPrivateDataEXT-objectType-04018",
31039          "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>"
31040        },
31041        {
31042          "vuid": "VUID-vkGetPrivateDataEXT-device-parameter",
31043          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
31044        },
31045        {
31046          "vuid": "VUID-vkGetPrivateDataEXT-objectType-parameter",
31047          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
31048        },
31049        {
31050          "vuid": "VUID-vkGetPrivateDataEXT-privateDataSlot-parameter",
31051          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrivateDataSlotEXT\">VkPrivateDataSlotEXT</a> handle"
31052        },
31053        {
31054          "vuid": "VUID-vkGetPrivateDataEXT-pData-parameter",
31055          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
31056        },
31057        {
31058          "vuid": "VUID-vkGetPrivateDataEXT-privateDataSlot-parent",
31059          "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
31060        }
31061      ]
31062    },
31063    "vkCmdTraceRaysNV": {
31064      "core": [
31065        {
31066          "vuid": "VUID-vkCmdTraceRaysNV-magFilter-04553",
31067          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
31068        },
31069        {
31070          "vuid": "VUID-vkCmdTraceRaysNV-None-02691",
31071          "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>"
31072        },
31073        {
31074          "vuid": "VUID-vkCmdTraceRaysNV-None-02697",
31075          "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>"
31076        },
31077        {
31078          "vuid": "VUID-vkCmdTraceRaysNV-None-02698",
31079          "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>"
31080        },
31081        {
31082          "vuid": "VUID-vkCmdTraceRaysNV-None-02699",
31083          "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"
31084        },
31085        {
31086          "vuid": "VUID-vkCmdTraceRaysNV-None-02700",
31087          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
31088        },
31089        {
31090          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02701",
31091          "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"
31092        },
31093        {
31094          "vuid": "VUID-vkCmdTraceRaysNV-None-02859",
31095          "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"
31096        },
31097        {
31098          "vuid": "VUID-vkCmdTraceRaysNV-None-02702",
31099          "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"
31100        },
31101        {
31102          "vuid": "VUID-vkCmdTraceRaysNV-None-02703",
31103          "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"
31104        },
31105        {
31106          "vuid": "VUID-vkCmdTraceRaysNV-None-02704",
31107          "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"
31108        },
31109        {
31110          "vuid": "VUID-vkCmdTraceRaysNV-None-02705",
31111          "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"
31112        },
31113        {
31114          "vuid": "VUID-vkCmdTraceRaysNV-None-02706",
31115          "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"
31116        },
31117        {
31118          "vuid": "VUID-vkCmdTraceRaysNV-None-04115",
31119          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
31120        },
31121        {
31122          "vuid": "VUID-vkCmdTraceRaysNV-OpImageWrite-04469",
31123          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
31124        },
31125        {
31126          "vuid": "VUID-vkCmdTraceRaysNV-None-03429",
31127          "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"
31128        },
31129        {
31130          "vuid": "VUID-vkCmdTraceRaysNV-maxRecursionDepth-03430",
31131          "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"
31132        },
31133        {
31134          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-04042",
31135          "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"
31136        },
31137        {
31138          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455",
31139          "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>raygenShaderBindingTableBuffer</code>"
31140        },
31141        {
31142          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456",
31143          "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
31144        },
31145        {
31146          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-04043",
31147          "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"
31148        },
31149        {
31150          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457",
31151          "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>missShaderBindingTableBuffer</code>"
31152        },
31153        {
31154          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458",
31155          "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
31156        },
31157        {
31158          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-04044",
31159          "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"
31160        },
31161        {
31162          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459",
31163          "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>hitShaderBindingTableBuffer</code>"
31164        },
31165        {
31166          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460",
31167          "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
31168        },
31169        {
31170          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-04045",
31171          "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"
31172        },
31173        {
31174          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461",
31175          "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>callableShaderBindingTableBuffer</code>"
31176        },
31177        {
31178          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462",
31179          "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
31180        },
31181        {
31182          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463",
31183          "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
31184        },
31185        {
31186          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464",
31187          "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
31188        },
31189        {
31190          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465",
31191          "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
31192        },
31193        {
31194          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466",
31195          "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
31196        },
31197        {
31198          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467",
31199          "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
31200        },
31201        {
31202          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468",
31203          "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
31204        },
31205        {
31206          "vuid": "VUID-vkCmdTraceRaysNV-width-02469",
31207          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
31208        },
31209        {
31210          "vuid": "VUID-vkCmdTraceRaysNV-height-02470",
31211          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
31212        },
31213        {
31214          "vuid": "VUID-vkCmdTraceRaysNV-depth-02471",
31215          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
31216        }
31217      ],
31218      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
31219        {
31220          "vuid": "VUID-vkCmdTraceRaysNV-None-02692",
31221          "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>"
31222        }
31223      ],
31224      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
31225        {
31226          "vuid": "VUID-vkCmdTraceRaysNV-None-02693",
31227          "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>"
31228        }
31229      ],
31230      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
31231        {
31232          "vuid": "VUID-vkCmdTraceRaysNV-filterCubic-02694",
31233          "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>"
31234        },
31235        {
31236          "vuid": "VUID-vkCmdTraceRaysNV-filterCubicMinmax-02695",
31237          "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>"
31238        }
31239      ],
31240      "(VK_NV_corner_sampled_image)": [
31241        {
31242          "vuid": "VUID-vkCmdTraceRaysNV-flags-02696",
31243          "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>"
31244        }
31245      ],
31246      "(VK_VERSION_1_1)": [
31247        {
31248          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02707",
31249          "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"
31250        },
31251        {
31252          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02712",
31253          "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"
31254        },
31255        {
31256          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02713",
31257          "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"
31258        }
31259      ],
31260      "(VK_EXT_shader_image_atomic_int64)": [
31261        {
31262          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04470",
31263          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
31264        },
31265        {
31266          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04471",
31267          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
31268        },
31269        {
31270          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04472",
31271          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
31272        },
31273        {
31274          "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04473",
31275          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
31276        },
31277        {
31278          "vuid": "VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04474",
31279          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
31280        },
31281        {
31282          "vuid": "VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04475",
31283          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
31284        }
31285      ],
31286      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
31287        {
31288          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-parameter",
31289          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
31290        },
31291        {
31292          "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter",
31293          "text": " <code>raygenShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
31294        },
31295        {
31296          "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter",
31297          "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"
31298        },
31299        {
31300          "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter",
31301          "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"
31302        },
31303        {
31304          "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter",
31305          "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"
31306        },
31307        {
31308          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-recording",
31309          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
31310        },
31311        {
31312          "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-cmdpool",
31313          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
31314        },
31315        {
31316          "vuid": "VUID-vkCmdTraceRaysNV-renderpass",
31317          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
31318        },
31319        {
31320          "vuid": "VUID-vkCmdTraceRaysNV-commonparent",
31321          "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>"
31322        }
31323      ]
31324    },
31325    "vkCmdTraceRaysKHR": {
31326      "core": [
31327        {
31328          "vuid": "VUID-vkCmdTraceRaysKHR-magFilter-04553",
31329          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
31330        },
31331        {
31332          "vuid": "VUID-vkCmdTraceRaysKHR-None-02691",
31333          "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>"
31334        },
31335        {
31336          "vuid": "VUID-vkCmdTraceRaysKHR-None-02697",
31337          "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>"
31338        },
31339        {
31340          "vuid": "VUID-vkCmdTraceRaysKHR-None-02698",
31341          "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>"
31342        },
31343        {
31344          "vuid": "VUID-vkCmdTraceRaysKHR-None-02699",
31345          "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"
31346        },
31347        {
31348          "vuid": "VUID-vkCmdTraceRaysKHR-None-02700",
31349          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
31350        },
31351        {
31352          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02701",
31353          "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"
31354        },
31355        {
31356          "vuid": "VUID-vkCmdTraceRaysKHR-None-02859",
31357          "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"
31358        },
31359        {
31360          "vuid": "VUID-vkCmdTraceRaysKHR-None-02702",
31361          "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"
31362        },
31363        {
31364          "vuid": "VUID-vkCmdTraceRaysKHR-None-02703",
31365          "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"
31366        },
31367        {
31368          "vuid": "VUID-vkCmdTraceRaysKHR-None-02704",
31369          "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"
31370        },
31371        {
31372          "vuid": "VUID-vkCmdTraceRaysKHR-None-02705",
31373          "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"
31374        },
31375        {
31376          "vuid": "VUID-vkCmdTraceRaysKHR-None-02706",
31377          "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"
31378        },
31379        {
31380          "vuid": "VUID-vkCmdTraceRaysKHR-None-04115",
31381          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
31382        },
31383        {
31384          "vuid": "VUID-vkCmdTraceRaysKHR-OpImageWrite-04469",
31385          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
31386        },
31387        {
31388          "vuid": "VUID-vkCmdTraceRaysKHR-None-03429",
31389          "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"
31390        },
31391        {
31392          "vuid": "VUID-vkCmdTraceRaysKHR-maxRecursionDepth-03430",
31393          "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"
31394        },
31395        {
31396          "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-04019",
31397          "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"
31398        },
31399        {
31400          "vuid": "VUID-vkCmdTraceRaysKHR-offset-04020",
31401          "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>"
31402        },
31403        {
31404          "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-04021",
31405          "text": " <code>pRayGenShaderBindingTable-&gt;offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
31406        },
31407        {
31408          "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-04022",
31409          "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>"
31410        },
31411        {
31412          "vuid": "VUID-vkCmdTraceRaysKHR-size-04023",
31413          "text": " The <code>size</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be equal to its <code>stride</code> member"
31414        },
31415        {
31416          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-04024",
31417          "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"
31418        },
31419        {
31420          "vuid": "VUID-vkCmdTraceRaysKHR-offset-04025",
31421          "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>"
31422        },
31423        {
31424          "vuid": "VUID-vkCmdTraceRaysKHR-offset-04026",
31425          "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>"
31426        },
31427        {
31428          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-04027",
31429          "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>"
31430        },
31431        {
31432          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04028",
31433          "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>"
31434        },
31435        {
31436          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04029",
31437          "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>"
31438        },
31439        {
31440          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04030",
31441          "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"
31442        },
31443        {
31444          "vuid": "VUID-vkCmdTraceRaysKHR-offset-04031",
31445          "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>"
31446        },
31447        {
31448          "vuid": "VUID-vkCmdTraceRaysKHR-offset-04032",
31449          "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>"
31450        },
31451        {
31452          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04033",
31453          "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>"
31454        },
31455        {
31456          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04034",
31457          "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>"
31458        },
31459        {
31460          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04035",
31461          "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>"
31462        },
31463        {
31464          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-04036",
31465          "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"
31466        },
31467        {
31468          "vuid": "VUID-vkCmdTraceRaysKHR-offset-04037",
31469          "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>"
31470        },
31471        {
31472          "vuid": "VUID-vkCmdTraceRaysKHR-offset-04038",
31473          "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>"
31474        },
31475        {
31476          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-04039",
31477          "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>"
31478        },
31479        {
31480          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04040",
31481          "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>"
31482        },
31483        {
31484          "vuid": "VUID-vkCmdTraceRaysKHR-stride-04041",
31485          "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>"
31486        },
31487        {
31488          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03508",
31489          "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>"
31490        },
31491        {
31492          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03509",
31493          "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>"
31494        },
31495        {
31496          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03510",
31497          "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>"
31498        },
31499        {
31500          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03511",
31501          "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"
31502        },
31503        {
31504          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03512",
31505          "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"
31506        },
31507        {
31508          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03513",
31509          "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"
31510        },
31511        {
31512          "vuid": "VUID-vkCmdTraceRaysKHR-flags-03514",
31513          "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"
31514        },
31515        {
31516          "vuid": "VUID-vkCmdTraceRaysKHR-width-03505",
31517          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
31518        },
31519        {
31520          "vuid": "VUID-vkCmdTraceRaysKHR-height-03506",
31521          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
31522        },
31523        {
31524          "vuid": "VUID-vkCmdTraceRaysKHR-depth-03507",
31525          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
31526        }
31527      ],
31528      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
31529        {
31530          "vuid": "VUID-vkCmdTraceRaysKHR-None-02692",
31531          "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>"
31532        }
31533      ],
31534      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
31535        {
31536          "vuid": "VUID-vkCmdTraceRaysKHR-None-02693",
31537          "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>"
31538        }
31539      ],
31540      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
31541        {
31542          "vuid": "VUID-vkCmdTraceRaysKHR-filterCubic-02694",
31543          "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>"
31544        },
31545        {
31546          "vuid": "VUID-vkCmdTraceRaysKHR-filterCubicMinmax-02695",
31547          "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>"
31548        }
31549      ],
31550      "(VK_NV_corner_sampled_image)": [
31551        {
31552          "vuid": "VUID-vkCmdTraceRaysKHR-flags-02696",
31553          "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>"
31554        }
31555      ],
31556      "(VK_VERSION_1_1)": [
31557        {
31558          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02707",
31559          "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"
31560        },
31561        {
31562          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02712",
31563          "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"
31564        },
31565        {
31566          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02713",
31567          "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"
31568        }
31569      ],
31570      "(VK_EXT_shader_image_atomic_int64)": [
31571        {
31572          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04470",
31573          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
31574        },
31575        {
31576          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04471",
31577          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
31578        },
31579        {
31580          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04472",
31581          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
31582        },
31583        {
31584          "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04473",
31585          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
31586        },
31587        {
31588          "vuid": "VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04474",
31589          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
31590        },
31591        {
31592          "vuid": "VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04475",
31593          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
31594        }
31595      ],
31596      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
31597        {
31598          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-parameter",
31599          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
31600        },
31601        {
31602          "vuid": "VUID-vkCmdTraceRaysKHR-pRaygenShaderBindingTable-parameter",
31603          "text": " <code>pRaygenShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
31604        },
31605        {
31606          "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-parameter",
31607          "text": " <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
31608        },
31609        {
31610          "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-parameter",
31611          "text": " <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
31612        },
31613        {
31614          "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-parameter",
31615          "text": " <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
31616        },
31617        {
31618          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-recording",
31619          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
31620        },
31621        {
31622          "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-cmdpool",
31623          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
31624        },
31625        {
31626          "vuid": "VUID-vkCmdTraceRaysKHR-renderpass",
31627          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
31628        }
31629      ]
31630    },
31631    "VkStridedBufferRegionKHR": {
31632      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
31633        {
31634          "vuid": "VUID-VkStridedBufferRegionKHR-buffer-03515",
31635          "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>"
31636        },
31637        {
31638          "vuid": "VUID-VkStridedBufferRegionKHR-buffer-03516",
31639          "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>"
31640        },
31641        {
31642          "vuid": "VUID-VkStridedBufferRegionKHR-buffer-parameter",
31643          "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"
31644        }
31645      ]
31646    },
31647    "vkCmdTraceRaysIndirectKHR": {
31648      "core": [
31649        {
31650          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-magFilter-04553",
31651          "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> 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>"
31652        },
31653        {
31654          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02691",
31655          "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>"
31656        },
31657        {
31658          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02697",
31659          "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>"
31660        },
31661        {
31662          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02698",
31663          "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>"
31664        },
31665        {
31666          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02699",
31667          "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"
31668        },
31669        {
31670          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02700",
31671          "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
31672        },
31673        {
31674          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02701",
31675          "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"
31676        },
31677        {
31678          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02859",
31679          "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"
31680        },
31681        {
31682          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02702",
31683          "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"
31684        },
31685        {
31686          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02703",
31687          "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"
31688        },
31689        {
31690          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02704",
31691          "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"
31692        },
31693        {
31694          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02705",
31695          "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"
31696        },
31697        {
31698          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02706",
31699          "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"
31700        },
31701        {
31702          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-04115",
31703          "text": " If a <a href=\"#VkImageView\">VkImageView</a> 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."
31704        },
31705        {
31706          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWrite-04469",
31707          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> 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."
31708        },
31709        {
31710          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-03429",
31711          "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"
31712        },
31713        {
31714          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-maxRecursionDepth-03430",
31715          "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"
31716        },
31717        {
31718          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-04019",
31719          "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"
31720        },
31721        {
31722          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04020",
31723          "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>"
31724        },
31725        {
31726          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-04021",
31727          "text": " <code>pRayGenShaderBindingTable-&gt;offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>"
31728        },
31729        {
31730          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-04022",
31731          "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>"
31732        },
31733        {
31734          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-size-04023",
31735          "text": " The <code>size</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be equal to its <code>stride</code> member"
31736        },
31737        {
31738          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-04024",
31739          "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"
31740        },
31741        {
31742          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04025",
31743          "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>"
31744        },
31745        {
31746          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04026",
31747          "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>"
31748        },
31749        {
31750          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-04027",
31751          "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>"
31752        },
31753        {
31754          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04028",
31755          "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>"
31756        },
31757        {
31758          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04029",
31759          "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>"
31760        },
31761        {
31762          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04030",
31763          "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"
31764        },
31765        {
31766          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04031",
31767          "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>"
31768        },
31769        {
31770          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04032",
31771          "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>"
31772        },
31773        {
31774          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04033",
31775          "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>"
31776        },
31777        {
31778          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04034",
31779          "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>"
31780        },
31781        {
31782          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04035",
31783          "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>"
31784        },
31785        {
31786          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-04036",
31787          "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"
31788        },
31789        {
31790          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04037",
31791          "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>"
31792        },
31793        {
31794          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04038",
31795          "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>"
31796        },
31797        {
31798          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-04039",
31799          "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>"
31800        },
31801        {
31802          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04040",
31803          "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>"
31804        },
31805        {
31806          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04041",
31807          "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>"
31808        },
31809        {
31810          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03508",
31811          "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>"
31812        },
31813        {
31814          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03509",
31815          "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>"
31816        },
31817        {
31818          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03510",
31819          "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>"
31820        },
31821        {
31822          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03511",
31823          "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"
31824        },
31825        {
31826          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03512",
31827          "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"
31828        },
31829        {
31830          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03513",
31831          "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"
31832        },
31833        {
31834          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03514",
31835          "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"
31836        },
31837        {
31838          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-buffer-02708",
31839          "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"
31840        },
31841        {
31842          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-buffer-02709",
31843          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
31844        },
31845        {
31846          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-02710",
31847          "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
31848        },
31849        {
31850          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-03517",
31851          "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>"
31852        },
31853        {
31854          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-rayTracingIndirectTraceRays-03518",
31855          "text": " the <a href=\"#features-raytracing-indirecttraceray\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingIndirectTraceRays</code></a> feature <strong class=\"purple\">must</strong> be enabled"
31856        }
31857      ],
31858      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
31859        {
31860          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02692",
31861          "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>"
31862        }
31863      ],
31864      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
31865        {
31866          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02693",
31867          "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>"
31868        }
31869      ],
31870      "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
31871        {
31872          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-filterCubic-02694",
31873          "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>"
31874        },
31875        {
31876          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-filterCubicMinmax-02695",
31877          "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>"
31878        }
31879      ],
31880      "(VK_NV_corner_sampled_image)": [
31881        {
31882          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-02696",
31883          "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>"
31884        }
31885      ],
31886      "(VK_VERSION_1_1)": [
31887        {
31888          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02707",
31889          "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"
31890        },
31891        {
31892          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02711",
31893          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
31894        }
31895      ],
31896      "(VK_EXT_shader_image_atomic_int64)": [
31897        {
31898          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04470",
31899          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
31900        },
31901        {
31902          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04471",
31903          "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
31904        },
31905        {
31906          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04472",
31907          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64."
31908        },
31909        {
31910          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04473",
31911          "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32."
31912        },
31913        {
31914          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-sparseImageInt64Atomics-04474",
31915          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
31916        },
31917        {
31918          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-sparseImageInt64Atomics-04475",
31919          "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command."
31920        }
31921      ],
31922      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
31923        {
31924          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter",
31925          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
31926        },
31927        {
31928          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRaygenShaderBindingTable-parameter",
31929          "text": " <code>pRaygenShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
31930        },
31931        {
31932          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-parameter",
31933          "text": " <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
31934        },
31935        {
31936          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-parameter",
31937          "text": " <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
31938        },
31939        {
31940          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-parameter",
31941          "text": " <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure"
31942        },
31943        {
31944          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-buffer-parameter",
31945          "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
31946        },
31947        {
31948          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-recording",
31949          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
31950        },
31951        {
31952          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-cmdpool",
31953          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
31954        },
31955        {
31956          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-renderpass",
31957          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
31958        },
31959        {
31960          "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commonparent",
31961          "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>"
31962        }
31963      ]
31964    },
31965    "VkTraceRaysIndirectCommandKHR": {
31966      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
31967        {
31968          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-width-03519",
31969          "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
31970        },
31971        {
31972          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-height-03520",
31973          "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
31974        },
31975        {
31976          "vuid": "VUID-VkTraceRaysIndirectCommandKHR-depth-03521",
31977          "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
31978        }
31979      ]
31980    },
31981    "vkCmdBuildAccelerationStructureNV": {
31982      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
31983        {
31984          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241",
31985          "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>"
31986        },
31987        {
31988          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-02488",
31989          "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"
31990        },
31991        {
31992          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02489",
31993          "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>"
31994        },
31995        {
31996          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02490",
31997          "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>"
31998        },
31999        {
32000          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02491",
32001          "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>"
32002        },
32003        {
32004          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02492",
32005          "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>"
32006        },
32007        {
32008          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-03522",
32009          "text": " <code>scratch</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag"
32010        },
32011        {
32012          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-03523",
32013          "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"
32014        },
32015        {
32016          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03524",
32017          "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>"
32018        },
32019        {
32020          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03525",
32021          "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>"
32022        },
32023        {
32024          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03526",
32025          "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>"
32026        },
32027        {
32028          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter",
32029          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
32030        },
32031        {
32032          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter",
32033          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> structure"
32034        },
32035        {
32036          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter",
32037          "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"
32038        },
32039        {
32040          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-parameter",
32041          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
32042        },
32043        {
32044          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-src-parameter",
32045          "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"
32046        },
32047        {
32048          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter",
32049          "text": " <code>scratch</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
32050        },
32051        {
32052          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording",
32053          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
32054        },
32055        {
32056          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool",
32057          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
32058        },
32059        {
32060          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-renderpass",
32061          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
32062        },
32063        {
32064          "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commonparent",
32065          "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>"
32066        }
32067      ]
32068    },
32069    "vkCmdBuildAccelerationStructureKHR": {
32070      "core": [
32071        {
32072          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pOffsetInfos-03402",
32073          "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"
32074        },
32075        {
32076          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03403",
32077          "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"
32078        },
32079        {
32080          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03404",
32081          "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"
32082        },
32083        {
32084          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03405",
32085          "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>"
32086        },
32087        {
32088          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03406",
32089          "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>"
32090        },
32091        {
32092          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-None-03407",
32093          "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"
32094        },
32095        {
32096          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03408",
32097          "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"
32098        },
32099        {
32100          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-None-03409",
32101          "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"
32102        },
32103        {
32104          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-update-03527",
32105          "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>"
32106        },
32107        {
32108          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-update-03528",
32109          "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>"
32110        },
32111        {
32112          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03529",
32113          "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"
32114        },
32115        {
32116          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-None-04046",
32117          "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"
32118        },
32119        {
32120          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-None-03531",
32121          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to device memory"
32122        }
32123      ],
32124      "(VK_KHR_deferred_host_operations)": [
32125        {
32126          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pNext-03532",
32127          "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"
32128        }
32129      ],
32130      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
32131        {
32132          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-commandBuffer-parameter",
32133          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
32134        },
32135        {
32136          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-parameter",
32137          "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"
32138        },
32139        {
32140          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-ppOffsetInfos-parameter",
32141          "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"
32142        },
32143        {
32144          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-commandBuffer-recording",
32145          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
32146        },
32147        {
32148          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-commandBuffer-cmdpool",
32149          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
32150        },
32151        {
32152          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-renderpass",
32153          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
32154        },
32155        {
32156          "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-infoCount-arraylength",
32157          "text": " <code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
32158        }
32159      ]
32160    },
32161    "vkCmdBuildAccelerationStructureIndirectKHR": {
32162      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
32163        {
32164          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-None-04047",
32165          "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"
32166        },
32167        {
32168          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-None-03534",
32169          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to device memory"
32170        },
32171        {
32172          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-rayTracingIndirectAccelerationStructureBuild-03535",
32173          "text": " The <a href=\"#features-raytracing-indirectasbuild\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingIndirectAccelerationStructureBuild</code></a> feature <strong class=\"purple\">must</strong> be enabled"
32174        },
32175        {
32176          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-commandBuffer-parameter",
32177          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
32178        },
32179        {
32180          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-pInfo-parameter",
32181          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure"
32182        },
32183        {
32184          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-indirectBuffer-parameter",
32185          "text": " <code>indirectBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle"
32186        },
32187        {
32188          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-commandBuffer-recording",
32189          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
32190        },
32191        {
32192          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-commandBuffer-cmdpool",
32193          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
32194        },
32195        {
32196          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-renderpass",
32197          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
32198        },
32199        {
32200          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-commonparent",
32201          "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>"
32202        }
32203      ],
32204      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)+(VK_KHR_deferred_host_operations)": [
32205        {
32206          "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-pNext-03536",
32207          "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"
32208        }
32209      ]
32210    },
32211    "VkAccelerationStructureBuildGeometryInfoKHR": {
32212      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
32213        {
32214          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-update-03537",
32215          "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>"
32216        },
32217        {
32218          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-update-03538",
32219          "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>"
32220        },
32221        {
32222          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-scratchData-03539",
32223          "text": " <code>scratchData</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR</code> usage flag"
32224        },
32225        {
32226          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-update-03540",
32227          "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>"
32228        },
32229        {
32230          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-sType",
32231          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR</code>"
32232        },
32233        {
32234          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-pNext-pNext",
32235          "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>"
32236        },
32237        {
32238          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-unique",
32239          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
32240        },
32241        {
32242          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-parameter",
32243          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeKHR\">VkAccelerationStructureTypeKHR</a> value"
32244        },
32245        {
32246          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-parameter",
32247          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsKHR\">VkBuildAccelerationStructureFlagBitsKHR</a> values"
32248        },
32249        {
32250          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-srcAccelerationStructure-parameter",
32251          "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"
32252        },
32253        {
32254          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-dstAccelerationStructure-parameter",
32255          "text": " <code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
32256        },
32257        {
32258          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-scratchData-parameter",
32259          "text": " <code>scratchData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> union"
32260        },
32261        {
32262          "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-commonparent",
32263          "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>"
32264        }
32265      ]
32266    },
32267    "VkAccelerationStructureGeometryKHR": {
32268      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
32269        {
32270          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-03541",
32271          "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"
32272        },
32273        {
32274          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-03542",
32275          "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"
32276        },
32277        {
32278          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-03543",
32279          "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"
32280        },
32281        {
32282          "vuid": "VUID-VkAccelerationStructureGeometryKHR-sType-sType",
32283          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR</code>"
32284        },
32285        {
32286          "vuid": "VUID-VkAccelerationStructureGeometryKHR-pNext-pNext",
32287          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
32288        },
32289        {
32290          "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-parameter",
32291          "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeKHR\">VkGeometryTypeKHR</a> value"
32292        },
32293        {
32294          "vuid": "VUID-VkAccelerationStructureGeometryKHR-triangles-parameter",
32295          "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"
32296        },
32297        {
32298          "vuid": "VUID-VkAccelerationStructureGeometryKHR-aabbs-parameter",
32299          "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"
32300        },
32301        {
32302          "vuid": "VUID-VkAccelerationStructureGeometryKHR-instances-parameter",
32303          "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"
32304        },
32305        {
32306          "vuid": "VUID-VkAccelerationStructureGeometryKHR-flags-parameter",
32307          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsKHR\">VkGeometryFlagBitsKHR</a> values"
32308        }
32309      ]
32310    },
32311    "VkAccelerationStructureGeometryTrianglesDataKHR": {
32312      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
32313        {
32314          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-sType",
32315          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR</code>"
32316        },
32317        {
32318          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-pNext-pNext",
32319          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
32320        },
32321        {
32322          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter",
32323          "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
32324        },
32325        {
32326          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexData-parameter",
32327          "text": " <code>vertexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
32328        },
32329        {
32330          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter",
32331          "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
32332        },
32333        {
32334          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexData-parameter",
32335          "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"
32336        },
32337        {
32338          "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-transformData-parameter",
32339          "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"
32340        }
32341      ]
32342    },
32343    "VkAccelerationStructureGeometryAabbsDataKHR": {
32344      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
32345        {
32346          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-data-03544",
32347          "text": " <code>data</code> <strong class=\"purple\">must</strong> be aligned to <code>8</code> bytes"
32348        },
32349        {
32350          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03545",
32351          "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
32352        },
32353        {
32354          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-sType-sType",
32355          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR</code>"
32356        },
32357        {
32358          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-pNext-pNext",
32359          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
32360        },
32361        {
32362          "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-data-parameter",
32363          "text": " <code>data</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
32364        }
32365      ]
32366    },
32367    "VkAabbPositionsKHR": {
32368      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
32369        {
32370          "vuid": "VUID-VkAabbPositionsKHR-minX-03546",
32371          "text": " <code>minX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxX</code>"
32372        },
32373        {
32374          "vuid": "VUID-VkAabbPositionsKHR-minY-03547",
32375          "text": " <code>minY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxY</code>"
32376        },
32377        {
32378          "vuid": "VUID-VkAabbPositionsKHR-minZ-03548",
32379          "text": " <code>minZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxZ</code>"
32380        }
32381      ]
32382    },
32383    "VkAccelerationStructureGeometryInstancesDataKHR": {
32384      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
32385        {
32386          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-data-03549",
32387          "text": " <code>data</code> <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
32388        },
32389        {
32390          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-arrayOfPointers-03550",
32391          "text": " If <code>arrayOfPointers</code> is true, each pointer <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes"
32392        },
32393        {
32394          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-sType-sType",
32395          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR</code>"
32396        },
32397        {
32398          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-pNext-pNext",
32399          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
32400        },
32401        {
32402          "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-data-parameter",
32403          "text": " <code>data</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
32404        }
32405      ]
32406    },
32407    "VkAccelerationStructureInstanceKHR": {
32408      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
32409        {
32410          "vuid": "VUID-VkAccelerationStructureInstanceKHR-flags-parameter",
32411          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryInstanceFlagBitsKHR\">VkGeometryInstanceFlagBitsKHR</a> values"
32412        }
32413      ]
32414    },
32415    "VkAccelerationStructureBuildOffsetInfoKHR": {
32416      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
32417        {
32418          "vuid": "VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03551",
32419          "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>"
32420        },
32421        {
32422          "vuid": "VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03552",
32423          "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>"
32424        },
32425        {
32426          "vuid": "VUID-VkAccelerationStructureBuildOffsetInfoKHR-transformOffset-03553",
32427          "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"
32428        },
32429        {
32430          "vuid": "VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03554",
32431          "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"
32432        },
32433        {
32434          "vuid": "VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03555",
32435          "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"
32436        }
32437      ]
32438    },
32439    "vkCmdWriteAccelerationStructuresPropertiesKHR": {
32440      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
32441        {
32442          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02493",
32443          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> matching <code>queryType</code>"
32444        },
32445        {
32446          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02494",
32447          "text": " The queries identified by <code>queryPool</code> and <code>firstQuery</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>"
32448        },
32449        {
32450          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter",
32451          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
32452        },
32453        {
32454          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter",
32455          "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"
32456        },
32457        {
32458          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-parameter",
32459          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
32460        },
32461        {
32462          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-parameter",
32463          "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle"
32464        },
32465        {
32466          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-recording",
32467          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
32468        },
32469        {
32470          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-cmdpool",
32471          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
32472        },
32473        {
32474          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-renderpass",
32475          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
32476        },
32477        {
32478          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength",
32479          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
32480        },
32481        {
32482          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commonparent",
32483          "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>"
32484        }
32485      ],
32486      "core": [
32487        {
32488          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431",
32489          "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>"
32490        },
32491        {
32492          "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-03432",
32493          "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>"
32494        }
32495      ]
32496    },
32497    "vkCmdCopyAccelerationStructureNV": {
32498      "core": [
32499        {
32500          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-03410",
32501          "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>"
32502        },
32503        {
32504          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-03411",
32505          "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>"
32506        }
32507      ],
32508      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [
32509        {
32510          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter",
32511          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
32512        },
32513        {
32514          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-dst-parameter",
32515          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
32516        },
32517        {
32518          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-parameter",
32519          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
32520        },
32521        {
32522          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-parameter",
32523          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
32524        },
32525        {
32526          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording",
32527          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
32528        },
32529        {
32530          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool",
32531          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
32532        },
32533        {
32534          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-renderpass",
32535          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
32536        },
32537        {
32538          "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commonparent",
32539          "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>"
32540        }
32541      ]
32542    },
32543    "vkCmdCopyAccelerationStructureKHR": {
32544      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
32545        {
32546          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-None-03556",
32547          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to device memory"
32548        },
32549        {
32550          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter",
32551          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
32552        },
32553        {
32554          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-pInfo-parameter",
32555          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureInfoKHR\">VkCopyAccelerationStructureInfoKHR</a> structure"
32556        },
32557        {
32558          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-recording",
32559          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
32560        },
32561        {
32562          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-cmdpool",
32563          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
32564        },
32565        {
32566          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-renderpass",
32567          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
32568        }
32569      ],
32570      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)+(VK_KHR_deferred_host_operations)": [
32571        {
32572          "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-pNext-03557",
32573          "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"
32574        }
32575      ]
32576    },
32577    "VkCopyAccelerationStructureInfoKHR": {
32578      "core": [
32579        {
32580          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-mode-03410",
32581          "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>"
32582        },
32583        {
32584          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-03411",
32585          "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>"
32586        }
32587      ],
32588      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [
32589        {
32590          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-sType-sType",
32591          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR</code>"
32592        },
32593        {
32594          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-pNext-pNext",
32595          "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>"
32596        },
32597        {
32598          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-sType-unique",
32599          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
32600        },
32601        {
32602          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-parameter",
32603          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
32604        },
32605        {
32606          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-dst-parameter",
32607          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
32608        },
32609        {
32610          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-mode-parameter",
32611          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
32612        },
32613        {
32614          "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-commonparent",
32615          "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>"
32616        }
32617      ]
32618    },
32619    "vkCmdCopyAccelerationStructureToMemoryKHR": {
32620      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
32621        {
32622          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-04048",
32623          "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"
32624        },
32625        {
32626          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-03559",
32627          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to device memory"
32628        },
32629        {
32630          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter",
32631          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
32632        },
32633        {
32634          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-parameter",
32635          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureToMemoryInfoKHR\">VkCopyAccelerationStructureToMemoryInfoKHR</a> structure"
32636        },
32637        {
32638          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-recording",
32639          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
32640        },
32641        {
32642          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-cmdpool",
32643          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
32644        },
32645        {
32646          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-renderpass",
32647          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
32648        }
32649      ],
32650      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_deferred_host_operations)": [
32651        {
32652          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pNext-03560",
32653          "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"
32654        }
32655      ],
32656      "core": [
32657        {
32658          "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-mode-03412",
32659          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR</code>"
32660        }
32661      ]
32662    },
32663    "VkCopyAccelerationStructureToMemoryInfoKHR": {
32664      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
32665        {
32666          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-03561",
32667          "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>"
32668        },
32669        {
32670          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-sType",
32671          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR</code>"
32672        },
32673        {
32674          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-pNext-pNext",
32675          "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>"
32676        },
32677        {
32678          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-unique",
32679          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
32680        },
32681        {
32682          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-parameter",
32683          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
32684        },
32685        {
32686          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-parameter",
32687          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> union"
32688        },
32689        {
32690          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-parameter",
32691          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
32692        }
32693      ],
32694      "core": [
32695        {
32696          "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-03412",
32697          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR</code>"
32698        }
32699      ]
32700    },
32701    "vkCmdCopyMemoryToAccelerationStructureKHR": {
32702      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
32703        {
32704          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-None-04049",
32705          "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"
32706        },
32707        {
32708          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-None-03563",
32709          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to device memory"
32710        },
32711        {
32712          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter",
32713          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
32714        },
32715        {
32716          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-parameter",
32717          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMemoryToAccelerationStructureInfoKHR\">VkCopyMemoryToAccelerationStructureInfoKHR</a> structure"
32718        },
32719        {
32720          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-recording",
32721          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
32722        },
32723        {
32724          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-cmdpool",
32725          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
32726        },
32727        {
32728          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-renderpass",
32729          "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
32730        }
32731      ],
32732      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_deferred_host_operations)": [
32733        {
32734          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pNext-03564",
32735          "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"
32736        }
32737      ],
32738      "core": [
32739        {
32740          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-mode-03413",
32741          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR</code>"
32742        },
32743        {
32744          "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03414",
32745          "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>"
32746        }
32747      ]
32748    },
32749    "VkCopyMemoryToAccelerationStructureInfoKHR": {
32750      "core": [
32751        {
32752          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-03413",
32753          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR</code>"
32754        },
32755        {
32756          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pInfo-03414",
32757          "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>"
32758        }
32759      ],
32760      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
32761        {
32762          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-sType",
32763          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR</code>"
32764        },
32765        {
32766          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pNext-pNext",
32767          "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>"
32768        },
32769        {
32770          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-unique",
32771          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
32772        },
32773        {
32774          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-src-parameter",
32775          "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union"
32776        },
32777        {
32778          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-parameter",
32779          "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle"
32780        },
32781        {
32782          "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-parameter",
32783          "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value"
32784        }
32785      ]
32786    },
32787    "vkGetDeviceAccelerationStructureCompatibilityKHR": {
32788      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
32789        {
32790          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-rayTracing-03565",
32791          "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"
32792        },
32793        {
32794          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-device-parameter",
32795          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
32796        },
32797        {
32798          "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-version-parameter",
32799          "text": " <code>version</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureVersionKHR\">VkAccelerationStructureVersionKHR</a> structure"
32800        }
32801      ]
32802    },
32803    "VkAccelerationStructureVersionKHR": {
32804      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
32805        {
32806          "vuid": "VUID-VkAccelerationStructureVersionKHR-sType-sType",
32807          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR</code>"
32808        },
32809        {
32810          "vuid": "VUID-VkAccelerationStructureVersionKHR-pNext-pNext",
32811          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
32812        },
32813        {
32814          "vuid": "VUID-VkAccelerationStructureVersionKHR-versionData-parameter",
32815          "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"
32816        }
32817      ]
32818    },
32819    "vkBuildAccelerationStructureKHR": {
32820      "core": [
32821        {
32822          "vuid": "VUID-vkBuildAccelerationStructureKHR-pOffsetInfos-03402",
32823          "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"
32824        },
32825        {
32826          "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-03403",
32827          "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"
32828        },
32829        {
32830          "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-03404",
32831          "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"
32832        },
32833        {
32834          "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-03405",
32835          "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>"
32836        },
32837        {
32838          "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-03406",
32839          "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>"
32840        },
32841        {
32842          "vuid": "VUID-vkBuildAccelerationStructureKHR-None-03407",
32843          "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"
32844        },
32845        {
32846          "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-03408",
32847          "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"
32848        },
32849        {
32850          "vuid": "VUID-vkBuildAccelerationStructureKHR-None-03409",
32851          "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"
32852        },
32853        {
32854          "vuid": "VUID-vkBuildAccelerationStructureKHR-None-03437",
32855          "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"
32856        },
32857        {
32858          "vuid": "VUID-vkBuildAccelerationStructureKHR-None-03438",
32859          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to host-visible memory"
32860        },
32861        {
32862          "vuid": "VUID-vkBuildAccelerationStructureKHR-rayTracingHostAccelerationStructureCommands-03439",
32863          "text": " The <a href=\"#features-raytracing-hostascmds\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingHostAccelerationStructureCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
32864        }
32865      ],
32866      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
32867        {
32868          "vuid": "VUID-vkBuildAccelerationStructureKHR-device-parameter",
32869          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
32870        },
32871        {
32872          "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-parameter",
32873          "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"
32874        },
32875        {
32876          "vuid": "VUID-vkBuildAccelerationStructureKHR-ppOffsetInfos-parameter",
32877          "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"
32878        },
32879        {
32880          "vuid": "VUID-vkBuildAccelerationStructureKHR-infoCount-arraylength",
32881          "text": " <code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
32882        }
32883      ]
32884    },
32885    "vkCopyAccelerationStructureKHR": {
32886      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
32887        {
32888          "vuid": "VUID-vkCopyAccelerationStructureKHR-None-03440",
32889          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to host-visible memory"
32890        },
32891        {
32892          "vuid": "VUID-vkCopyAccelerationStructureKHR-rayTracingHostAccelerationStructureCommands-03441",
32893          "text": " the <a href=\"#features-raytracing-hostascmds\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingHostAccelerationStructureCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
32894        },
32895        {
32896          "vuid": "VUID-vkCopyAccelerationStructureKHR-device-parameter",
32897          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
32898        },
32899        {
32900          "vuid": "VUID-vkCopyAccelerationStructureKHR-pInfo-parameter",
32901          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureInfoKHR\">VkCopyAccelerationStructureInfoKHR</a> structure"
32902        }
32903      ]
32904    },
32905    "vkCopyMemoryToAccelerationStructureKHR": {
32906      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
32907        {
32908          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-None-03442",
32909          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to host-visible memory"
32910        },
32911        {
32912          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-None-03443",
32913          "text": " All <code>VkDeviceOrHostAddressConstKHR</code> referenced by this command <strong class=\"purple\">must</strong> contain valid host pointers"
32914        },
32915        {
32916          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-rayTracingHostAccelerationStructureCommands-03444",
32917          "text": " the <a href=\"#features-raytracing-hostascmds\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingHostAccelerationStructureCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
32918        },
32919        {
32920          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-device-parameter",
32921          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
32922        },
32923        {
32924          "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-parameter",
32925          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMemoryToAccelerationStructureInfoKHR\">VkCopyMemoryToAccelerationStructureInfoKHR</a> structure"
32926        }
32927      ]
32928    },
32929    "vkCopyAccelerationStructureToMemoryKHR": {
32930      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
32931        {
32932          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-None-03445",
32933          "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to host-visible memory"
32934        },
32935        {
32936          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-None-03446",
32937          "text": " All <code>VkDeviceOrHostAddressKHR</code> referenced by this command <strong class=\"purple\">must</strong> contain valid host pointers"
32938        },
32939        {
32940          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-rayTracingHostAccelerationStructureCommands-03447",
32941          "text": " the <a href=\"#features-raytracing-hostascmds\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingHostAccelerationStructureCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
32942        },
32943        {
32944          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-device-parameter",
32945          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
32946        },
32947        {
32948          "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-parameter",
32949          "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureToMemoryInfoKHR\">VkCopyAccelerationStructureToMemoryInfoKHR</a> structure"
32950        }
32951      ]
32952    },
32953    "vkWriteAccelerationStructuresPropertiesKHR": {
32954      "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [
32955        {
32956          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03448",
32957          "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>"
32958        },
32959        {
32960          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03449",
32961          "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>"
32962        },
32963        {
32964          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03450",
32965          "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>"
32966        },
32967        {
32968          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03451",
32969          "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>"
32970        },
32971        {
32972          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-03452",
32973          "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>"
32974        },
32975        {
32976          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-03453",
32977          "text": " The acceleration structures referenced by <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be bound to host-visible memory"
32978        },
32979        {
32980          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-device-parameter",
32981          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
32982        },
32983        {
32984          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter",
32985          "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"
32986        },
32987        {
32988          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-parameter",
32989          "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
32990        },
32991        {
32992          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pData-parameter",
32993          "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
32994        },
32995        {
32996          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength",
32997          "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
32998        },
32999        {
33000          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-arraylength",
33001          "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
33002        },
33003        {
33004          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parent",
33005          "text": " Each element of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
33006        }
33007      ],
33008      "core": [
33009        {
33010          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431",
33011          "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>"
33012        },
33013        {
33014          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03432",
33015          "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>"
33016        },
33017        {
33018          "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-rayTracingHostAccelerationStructureCommands-03454",
33019          "text": " the <a href=\"#features-raytracing-hostascmds\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingHostAccelerationStructureCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled"
33020        }
33021      ]
33022    },
33023    "vkEnumerateInstanceLayerProperties": {
33024      "core": [
33025        {
33026          "vuid": "VUID-vkEnumerateInstanceLayerProperties-pPropertyCount-parameter",
33027          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
33028        },
33029        {
33030          "vuid": "VUID-vkEnumerateInstanceLayerProperties-pProperties-parameter",
33031          "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"
33032        }
33033      ]
33034    },
33035    "vkEnumerateDeviceLayerProperties": {
33036      "core": [
33037        {
33038          "vuid": "VUID-vkEnumerateDeviceLayerProperties-physicalDevice-parameter",
33039          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
33040        },
33041        {
33042          "vuid": "VUID-vkEnumerateDeviceLayerProperties-pPropertyCount-parameter",
33043          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
33044        },
33045        {
33046          "vuid": "VUID-vkEnumerateDeviceLayerProperties-pProperties-parameter",
33047          "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"
33048        }
33049      ]
33050    },
33051    "vkEnumerateInstanceExtensionProperties": {
33052      "core": [
33053        {
33054          "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pLayerName-parameter",
33055          "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"
33056        },
33057        {
33058          "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pPropertyCount-parameter",
33059          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
33060        },
33061        {
33062          "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pProperties-parameter",
33063          "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"
33064        }
33065      ]
33066    },
33067    "vkEnumerateDeviceExtensionProperties": {
33068      "core": [
33069        {
33070          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter",
33071          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
33072        },
33073        {
33074          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pLayerName-parameter",
33075          "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"
33076        },
33077        {
33078          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pPropertyCount-parameter",
33079          "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
33080        },
33081        {
33082          "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pProperties-parameter",
33083          "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"
33084        }
33085      ]
33086    },
33087    "vkGetPhysicalDeviceFeatures": {
33088      "core": [
33089        {
33090          "vuid": "VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter",
33091          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
33092        },
33093        {
33094          "vuid": "VUID-vkGetPhysicalDeviceFeatures-pFeatures-parameter",
33095          "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceFeatures\">VkPhysicalDeviceFeatures</a> structure"
33096        }
33097      ]
33098    },
33099    "vkGetPhysicalDeviceFeatures2": {
33100      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
33101        {
33102          "vuid": "VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter",
33103          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
33104        },
33105        {
33106          "vuid": "VUID-vkGetPhysicalDeviceFeatures2-pFeatures-parameter",
33107          "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a> structure"
33108        }
33109      ]
33110    },
33111    "VkPhysicalDeviceFeatures2": {
33112      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
33113        {
33114          "vuid": "VUID-VkPhysicalDeviceFeatures2-sType-sType",
33115          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2</code>"
33116        }
33117      ]
33118    },
33119    "VkPhysicalDeviceVulkan11Features": {
33120      "(VK_VERSION_1_2)": [
33121        {
33122          "vuid": "VUID-VkPhysicalDeviceVulkan11Features-sType-sType",
33123          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES</code>"
33124        }
33125      ]
33126    },
33127    "VkPhysicalDeviceVulkan12Features": {
33128      "(VK_VERSION_1_2)": [
33129        {
33130          "vuid": "VUID-VkPhysicalDeviceVulkan12Features-sType-sType",
33131          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES</code>"
33132        }
33133      ]
33134    },
33135    "VkPhysicalDeviceVariablePointersFeatures": {
33136      "(VK_VERSION_1_1,VK_KHR_variable_pointers)": [
33137        {
33138          "vuid": "VUID-VkPhysicalDeviceVariablePointersFeatures-variablePointers-01431",
33139          "text": " If <code>variablePointers</code> is enabled then <code>variablePointersStorageBuffer</code> <strong class=\"purple\">must</strong> also be enabled"
33140        },
33141        {
33142          "vuid": "VUID-VkPhysicalDeviceVariablePointersFeatures-sType-sType",
33143          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES</code>"
33144        }
33145      ]
33146    },
33147    "VkPhysicalDeviceMultiviewFeatures": {
33148      "(VK_VERSION_1_1,VK_KHR_multiview)": [
33149        {
33150          "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580",
33151          "text": " If <code>multiviewGeometryShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled"
33152        },
33153        {
33154          "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581",
33155          "text": " If <code>multiviewTessellationShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled"
33156        },
33157        {
33158          "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-sType-sType",
33159          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES</code>"
33160        }
33161      ]
33162    },
33163    "VkPhysicalDeviceShaderAtomicFloatFeaturesEXT": {
33164      "(VK_EXT_shader_atomic_float)": [
33165        {
33166          "vuid": "VUID-VkPhysicalDeviceShaderAtomicFloatFeaturesEXT-sType-sType",
33167          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT</code>"
33168        }
33169      ]
33170    },
33171    "VkPhysicalDeviceShaderAtomicInt64Features": {
33172      "(VK_VERSION_1_2,VK_KHR_shader_atomic_int64)": [
33173        {
33174          "vuid": "VUID-VkPhysicalDeviceShaderAtomicInt64Features-sType-sType",
33175          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES</code>"
33176        }
33177      ]
33178    },
33179    "VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT": {
33180      "(VK_EXT_shader_image_atomic_int64)": [
33181        {
33182          "vuid": "VUID-VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT-sType-sType",
33183          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT</code>"
33184        }
33185      ]
33186    },
33187    "VkPhysicalDevice8BitStorageFeatures": {
33188      "(VK_VERSION_1_2,VK_KHR_8bit_storage)": [
33189        {
33190          "vuid": "VUID-VkPhysicalDevice8BitStorageFeatures-sType-sType",
33191          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES</code>"
33192        }
33193      ]
33194    },
33195    "VkPhysicalDevice16BitStorageFeatures": {
33196      "(VK_VERSION_1_1,VK_KHR_16bit_storage)": [
33197        {
33198          "vuid": "VUID-VkPhysicalDevice16BitStorageFeatures-sType-sType",
33199          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES</code>"
33200        }
33201      ]
33202    },
33203    "VkPhysicalDeviceShaderFloat16Int8Features": {
33204      "(VK_VERSION_1_2,VK_KHR_shader_float16_int8)": [
33205        {
33206          "vuid": "VUID-VkPhysicalDeviceShaderFloat16Int8Features-sType-sType",
33207          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES</code>"
33208        }
33209      ]
33210    },
33211    "VkPhysicalDeviceShaderClockFeaturesKHR": {
33212      "(VK_KHR_shader_clock)": [
33213        {
33214          "vuid": "VUID-VkPhysicalDeviceShaderClockFeaturesKHR-sType-sType",
33215          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR</code>"
33216        }
33217      ]
33218    },
33219    "VkPhysicalDeviceSamplerYcbcrConversionFeatures": {
33220      "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
33221        {
33222          "vuid": "VUID-VkPhysicalDeviceSamplerYcbcrConversionFeatures-sType-sType",
33223          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES</code>"
33224        }
33225      ]
33226    },
33227    "VkPhysicalDeviceProtectedMemoryFeatures": {
33228      "(VK_VERSION_1_1)": [
33229        {
33230          "vuid": "VUID-VkPhysicalDeviceProtectedMemoryFeatures-sType-sType",
33231          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES</code>"
33232        }
33233      ]
33234    },
33235    "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT": {
33236      "(VK_EXT_blend_operation_advanced)": [
33237        {
33238          "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT-sType-sType",
33239          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT</code>"
33240        }
33241      ]
33242    },
33243    "VkPhysicalDeviceConditionalRenderingFeaturesEXT": {
33244      "(VK_EXT_conditional_rendering)": [
33245        {
33246          "vuid": "VUID-VkPhysicalDeviceConditionalRenderingFeaturesEXT-sType-sType",
33247          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT</code>"
33248        }
33249      ]
33250    },
33251    "VkPhysicalDeviceShaderDrawParametersFeatures": {
33252      "(VK_VERSION_1_1)": [
33253        {
33254          "vuid": "VUID-VkPhysicalDeviceShaderDrawParametersFeatures-sType-sType",
33255          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES</code>"
33256        }
33257      ]
33258    },
33259    "VkPhysicalDeviceMeshShaderFeaturesNV": {
33260      "(VK_NV_mesh_shader)": [
33261        {
33262          "vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesNV-sType-sType",
33263          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV</code>"
33264        }
33265      ]
33266    },
33267    "VkPhysicalDeviceDescriptorIndexingFeatures": {
33268      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
33269        {
33270          "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingFeatures-sType-sType",
33271          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES</code>"
33272        }
33273      ]
33274    },
33275    "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT": {
33276      "(VK_EXT_vertex_attribute_divisor)": [
33277        {
33278          "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT-sType-sType",
33279          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT</code>"
33280        }
33281      ]
33282    },
33283    "VkPhysicalDeviceASTCDecodeFeaturesEXT": {
33284      "(VK_EXT_astc_decode_mode)": [
33285        {
33286          "vuid": "VUID-VkPhysicalDeviceASTCDecodeFeaturesEXT-sType-sType",
33287          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT</code>"
33288        }
33289      ]
33290    },
33291    "VkPhysicalDeviceTransformFeedbackFeaturesEXT": {
33292      "(VK_EXT_transform_feedback)": [
33293        {
33294          "vuid": "VUID-VkPhysicalDeviceTransformFeedbackFeaturesEXT-sType-sType",
33295          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT</code>"
33296        }
33297      ]
33298    },
33299    "VkPhysicalDeviceVulkanMemoryModelFeatures": {
33300      "(VK_VERSION_1_2,VK_KHR_vulkan_memory_model)": [
33301        {
33302          "vuid": "VUID-VkPhysicalDeviceVulkanMemoryModelFeatures-sType-sType",
33303          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES</code>"
33304        }
33305      ]
33306    },
33307    "VkPhysicalDeviceInlineUniformBlockFeaturesEXT": {
33308      "(VK_EXT_inline_uniform_block)": [
33309        {
33310          "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockFeaturesEXT-sType-sType",
33311          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT</code>"
33312        }
33313      ]
33314    },
33315    "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV": {
33316      "(VK_NV_representative_fragment_test)": [
33317        {
33318          "vuid": "VUID-VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV-sType-sType",
33319          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV</code>"
33320        }
33321      ]
33322    },
33323    "VkPhysicalDeviceExclusiveScissorFeaturesNV": {
33324      "(VK_NV_scissor_exclusive)": [
33325        {
33326          "vuid": "VUID-VkPhysicalDeviceExclusiveScissorFeaturesNV-sType-sType",
33327          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV</code>"
33328        }
33329      ]
33330    },
33331    "VkPhysicalDeviceCornerSampledImageFeaturesNV": {
33332      "(VK_NV_corner_sampled_image)": [
33333        {
33334          "vuid": "VUID-VkPhysicalDeviceCornerSampledImageFeaturesNV-sType-sType",
33335          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV</code>"
33336        }
33337      ]
33338    },
33339    "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV": {
33340      "(VK_NV_compute_shader_derivatives)": [
33341        {
33342          "vuid": "VUID-VkPhysicalDeviceComputeShaderDerivativesFeaturesNV-sType-sType",
33343          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV</code>"
33344        }
33345      ]
33346    },
33347    "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV": {
33348      "(VK_NV_fragment_shader_barycentric)": [
33349        {
33350          "vuid": "VUID-VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV-sType-sType",
33351          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV</code>"
33352        }
33353      ]
33354    },
33355    "VkPhysicalDeviceShaderImageFootprintFeaturesNV": {
33356      "(VK_NV_shader_image_footprint)": [
33357        {
33358          "vuid": "VUID-VkPhysicalDeviceShaderImageFootprintFeaturesNV-sType-sType",
33359          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV</code>"
33360        }
33361      ]
33362    },
33363    "VkPhysicalDeviceShadingRateImageFeaturesNV": {
33364      "(VK_NV_shading_rate_image)": [
33365        {
33366          "vuid": "VUID-VkPhysicalDeviceShadingRateImageFeaturesNV-sType-sType",
33367          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV</code>"
33368        }
33369      ]
33370    },
33371    "VkPhysicalDeviceFragmentDensityMapFeaturesEXT": {
33372      "(VK_EXT_fragment_density_map)": [
33373        {
33374          "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapFeaturesEXT-sType-sType",
33375          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT</code>"
33376        }
33377      ]
33378    },
33379    "VkPhysicalDeviceFragmentDensityMap2FeaturesEXT": {
33380      "(VK_EXT_fragment_density_map2)": [
33381        {
33382          "vuid": "VUID-VkPhysicalDeviceFragmentDensityMap2FeaturesEXT-sType-sType",
33383          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT</code>"
33384        }
33385      ]
33386    },
33387    "VkPhysicalDeviceScalarBlockLayoutFeatures": {
33388      "(VK_VERSION_1_2,VK_EXT_scalar_block_layout)": [
33389        {
33390          "vuid": "VUID-VkPhysicalDeviceScalarBlockLayoutFeatures-sType-sType",
33391          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES</code>"
33392        }
33393      ]
33394    },
33395    "VkPhysicalDeviceUniformBufferStandardLayoutFeatures": {
33396      "(VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout)": [
33397        {
33398          "vuid": "VUID-VkPhysicalDeviceUniformBufferStandardLayoutFeatures-sType-sType",
33399          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES</code>"
33400        }
33401      ]
33402    },
33403    "VkPhysicalDeviceDepthClipEnableFeaturesEXT": {
33404      "(VK_EXT_depth_clip_enable)": [
33405        {
33406          "vuid": "VUID-VkPhysicalDeviceDepthClipEnableFeaturesEXT-sType-sType",
33407          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT</code>"
33408        }
33409      ]
33410    },
33411    "VkPhysicalDeviceMemoryPriorityFeaturesEXT": {
33412      "(VK_EXT_memory_priority)": [
33413        {
33414          "vuid": "VUID-VkPhysicalDeviceMemoryPriorityFeaturesEXT-sType-sType",
33415          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT</code>"
33416        }
33417      ]
33418    },
33419    "VkPhysicalDeviceBufferDeviceAddressFeatures": {
33420      "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
33421        {
33422          "vuid": "VUID-VkPhysicalDeviceBufferDeviceAddressFeatures-sType-sType",
33423          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES</code>"
33424        }
33425      ]
33426    },
33427    "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT": {
33428      "(VK_EXT_buffer_device_address)": [
33429        {
33430          "vuid": "VUID-VkPhysicalDeviceBufferDeviceAddressFeaturesEXT-sType-sType",
33431          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT</code>"
33432        }
33433      ]
33434    },
33435    "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV": {
33436      "(VK_NV_dedicated_allocation_image_aliasing)": [
33437        {
33438          "vuid": "VUID-VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV-sType-sType",
33439          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV</code>"
33440        }
33441      ]
33442    },
33443    "VkPhysicalDeviceImagelessFramebufferFeatures": {
33444      "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
33445        {
33446          "vuid": "VUID-VkPhysicalDeviceImagelessFramebufferFeatures-sType-sType",
33447          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES</code>"
33448        }
33449      ]
33450    },
33451    "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT": {
33452      "(VK_EXT_fragment_shader_interlock)": [
33453        {
33454          "vuid": "VUID-VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT-sType-sType",
33455          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT</code>"
33456        }
33457      ]
33458    },
33459    "VkPhysicalDeviceCooperativeMatrixFeaturesNV": {
33460      "(VK_NV_cooperative_matrix)": [
33461        {
33462          "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixFeaturesNV-sType-sType",
33463          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV</code>"
33464        }
33465      ]
33466    },
33467    "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT": {
33468      "(VK_EXT_ycbcr_image_arrays)": [
33469        {
33470          "vuid": "VUID-VkPhysicalDeviceYcbcrImageArraysFeaturesEXT-sType-sType",
33471          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT</code>"
33472        }
33473      ]
33474    },
33475    "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures": {
33476      "(VK_VERSION_1_1)+(VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types)": [
33477        {
33478          "vuid": "VUID-VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures-sType-sType",
33479          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES</code>"
33480        }
33481      ]
33482    },
33483    "VkPhysicalDeviceHostQueryResetFeatures": {
33484      "(VK_VERSION_1_2,VK_EXT_host_query_reset)": [
33485        {
33486          "vuid": "VUID-VkPhysicalDeviceHostQueryResetFeatures-sType-sType",
33487          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES</code>"
33488        }
33489      ]
33490    },
33491    "VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL": {
33492      "(VK_INTEL_shader_integer_functions2)": [
33493        {
33494          "vuid": "VUID-VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL-sType-sType",
33495          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL</code>"
33496        }
33497      ]
33498    },
33499    "VkPhysicalDeviceCoverageReductionModeFeaturesNV": {
33500      "(VK_NV_coverage_reduction_mode)": [
33501        {
33502          "vuid": "VUID-VkPhysicalDeviceCoverageReductionModeFeaturesNV-sType-sType",
33503          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV</code>"
33504        }
33505      ]
33506    },
33507    "VkPhysicalDeviceTimelineSemaphoreFeatures": {
33508      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
33509        {
33510          "vuid": "VUID-VkPhysicalDeviceTimelineSemaphoreFeatures-sType-sType",
33511          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES</code>"
33512        }
33513      ]
33514    },
33515    "VkPhysicalDeviceIndexTypeUint8FeaturesEXT": {
33516      "(VK_EXT_index_type_uint8)": [
33517        {
33518          "vuid": "VUID-VkPhysicalDeviceIndexTypeUint8FeaturesEXT-sType-sType",
33519          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT</code>"
33520        }
33521      ]
33522    },
33523    "VkPhysicalDeviceShaderSMBuiltinsFeaturesNV": {
33524      "(VK_NV_shader_sm_builtins)": [
33525        {
33526          "vuid": "VUID-VkPhysicalDeviceShaderSMBuiltinsFeaturesNV-sType-sType",
33527          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV</code>"
33528        }
33529      ]
33530    },
33531    "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures": {
33532      "(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
33533        {
33534          "vuid": "VUID-VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures-sType-sType",
33535          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES</code>"
33536        }
33537      ]
33538    },
33539    "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR": {
33540      "(VK_KHR_pipeline_executable_properties)": [
33541        {
33542          "vuid": "VUID-VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR-sType-sType",
33543          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR</code>"
33544        }
33545      ]
33546    },
33547    "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT": {
33548      "(VK_EXT_shader_demote_to_helper_invocation)": [
33549        {
33550          "vuid": "VUID-VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT-sType-sType",
33551          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT</code>"
33552        }
33553      ]
33554    },
33555    "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT": {
33556      "(VK_EXT_texel_buffer_alignment)": [
33557        {
33558          "vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT-sType-sType",
33559          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT</code>"
33560        }
33561      ]
33562    },
33563    "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT": {
33564      "(VK_EXT_texture_compression_astc_hdr)": [
33565        {
33566          "vuid": "VUID-VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT-sType-sType",
33567          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT</code>"
33568        }
33569      ]
33570    },
33571    "VkPhysicalDeviceLineRasterizationFeaturesEXT": {
33572      "(VK_EXT_line_rasterization)": [
33573        {
33574          "vuid": "VUID-VkPhysicalDeviceLineRasterizationFeaturesEXT-sType-sType",
33575          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT</code>"
33576        }
33577      ]
33578    },
33579    "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT": {
33580      "(VK_EXT_subgroup_size_control)": [
33581        {
33582          "vuid": "VUID-VkPhysicalDeviceSubgroupSizeControlFeaturesEXT-sType-sType",
33583          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT</code>"
33584        }
33585      ]
33586    },
33587    "VkPhysicalDeviceCoherentMemoryFeaturesAMD": {
33588      "(VK_AMD_device_coherent_memory)": [
33589        {
33590          "vuid": "VUID-VkPhysicalDeviceCoherentMemoryFeaturesAMD-sType-sType",
33591          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD</code>"
33592        }
33593      ]
33594    },
33595    "VkPhysicalDeviceRayTracingFeaturesKHR": {
33596      "(VK_KHR_ray_tracing)": [
33597        {
33598          "vuid": "VUID-VkPhysicalDeviceRayTracingFeaturesKHR-rayTracingShaderGroupHandleCaptureReplayMixed-03348",
33599          "text": " If <code>rayTracingShaderGroupHandleCaptureReplayMixed</code> is <code>VK_TRUE</code>, <code>rayTracingShaderGroupHandleCaptureReplay</code> <strong class=\"purple\">must</strong> also be <code>VK_TRUE</code>"
33600        },
33601        {
33602          "vuid": "VUID-VkPhysicalDeviceRayTracingFeaturesKHR-sType-sType",
33603          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR</code>"
33604        }
33605      ]
33606    },
33607    "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT": {
33608      "(VK_EXT_extended_dynamic_state)": [
33609        {
33610          "vuid": "VUID-VkPhysicalDeviceExtendedDynamicStateFeaturesEXT-sType-sType",
33611          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT</code>"
33612        }
33613      ]
33614    },
33615    "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV": {
33616      "(VK_NV_device_generated_commands)": [
33617        {
33618          "vuid": "VUID-VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV-sType-sType",
33619          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV</code>"
33620        }
33621      ]
33622    },
33623    "VkPhysicalDeviceDiagnosticsConfigFeaturesNV": {
33624      "(VK_NV_device_diagnostics_config)": [
33625        {
33626          "vuid": "VUID-VkPhysicalDeviceDiagnosticsConfigFeaturesNV-sType-sType",
33627          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV</code>"
33628        }
33629      ]
33630    },
33631    "VkPhysicalDeviceDeviceMemoryReportFeaturesEXT": {
33632      "(VK_EXT_device_memory_report)": [
33633        {
33634          "vuid": "VUID-VkPhysicalDeviceDeviceMemoryReportFeaturesEXT-sType-sType",
33635          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT</code>"
33636        }
33637      ]
33638    },
33639    "VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT": {
33640      "(VK_EXT_pipeline_creation_cache_control)": [
33641        {
33642          "vuid": "VUID-VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT-sType-sType",
33643          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT</code>"
33644        }
33645      ]
33646    },
33647    "VkPhysicalDevicePrivateDataFeaturesEXT": {
33648      "(VK_EXT_private_data)": [
33649        {
33650          "vuid": "VUID-VkPhysicalDevicePrivateDataFeaturesEXT-sType-sType",
33651          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT</code>"
33652        }
33653      ]
33654    },
33655    "VkPhysicalDeviceRobustness2FeaturesEXT": {
33656      "(VK_EXT_robustness2)": [
33657        {
33658          "vuid": "VUID-VkPhysicalDeviceRobustness2FeaturesEXT-robustBufferAccess2-04000",
33659          "text": " If <code>robustBufferAccess2</code> is enabled then <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> <strong class=\"purple\">must</strong> also be enabled"
33660        },
33661        {
33662          "vuid": "VUID-VkPhysicalDeviceRobustness2FeaturesEXT-sType-sType",
33663          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT</code>"
33664        }
33665      ]
33666    },
33667    "VkPhysicalDeviceImageRobustnessFeaturesEXT": {
33668      "(VK_EXT_image_robustness)": [
33669        {
33670          "vuid": "VUID-VkPhysicalDeviceImageRobustnessFeaturesEXT-sType-sType",
33671          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT</code>"
33672        }
33673      ]
33674    },
33675    "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR": {
33676      "(VK_KHR_shader_terminate_invocation)": [
33677        {
33678          "vuid": "VUID-VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR-sType-sType",
33679          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR</code>"
33680        }
33681      ]
33682    },
33683    "VkPhysicalDeviceCustomBorderColorFeaturesEXT": {
33684      "(VK_EXT_custom_border_color)": [
33685        {
33686          "vuid": "VUID-VkPhysicalDeviceCustomBorderColorFeaturesEXT-sType-sType",
33687          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT</code>"
33688        }
33689      ]
33690    },
33691    "VkPhysicalDevicePortabilitySubsetFeaturesKHR": {
33692      "(VK_KHR_portability_subset)": [
33693        {
33694          "vuid": "VUID-VkPhysicalDevicePortabilitySubsetFeaturesKHR-sType-sType",
33695          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR</code>"
33696        }
33697      ]
33698    },
33699    "VkPhysicalDevicePerformanceQueryFeaturesKHR": {
33700      "(VK_KHR_performance_query)": [
33701        {
33702          "vuid": "VUID-VkPhysicalDevicePerformanceQueryFeaturesKHR-sType-sType",
33703          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR</code>"
33704        }
33705      ]
33706    },
33707    "VkPhysicalDevice4444FormatsFeaturesEXT": {
33708      "(VK_EXT_4444_formats)": [
33709        {
33710          "vuid": "VUID-VkPhysicalDevice4444FormatsFeaturesEXT-sType-sType",
33711          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT</code>"
33712        }
33713      ]
33714    },
33715    "VkPhysicalDeviceFragmentShadingRateFeaturesKHR": {
33716      "(VK_KHR_fragment_shading_rate)": [
33717        {
33718          "vuid": "VUID-VkPhysicalDeviceFragmentShadingRateFeaturesKHR-sType-sType",
33719          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR</code>"
33720        }
33721      ]
33722    },
33723    "VkPhysicalDevicePushDescriptorPropertiesKHR": {
33724      "(VK_KHR_push_descriptor)": [
33725        {
33726          "vuid": "VUID-VkPhysicalDevicePushDescriptorPropertiesKHR-sType-sType",
33727          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR</code>"
33728        }
33729      ]
33730    },
33731    "VkPhysicalDeviceMultiviewProperties": {
33732      "(VK_VERSION_1_1,VK_KHR_multiview)": [
33733        {
33734          "vuid": "VUID-VkPhysicalDeviceMultiviewProperties-sType-sType",
33735          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES</code>"
33736        }
33737      ]
33738    },
33739    "VkPhysicalDeviceFloatControlsProperties": {
33740      "(VK_VERSION_1_2,VK_KHR_shader_float_controls)": [
33741        {
33742          "vuid": "VUID-VkPhysicalDeviceFloatControlsProperties-sType-sType",
33743          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES</code>"
33744        }
33745      ]
33746    },
33747    "VkPhysicalDeviceDiscardRectanglePropertiesEXT": {
33748      "(VK_EXT_discard_rectangles)": [
33749        {
33750          "vuid": "VUID-VkPhysicalDeviceDiscardRectanglePropertiesEXT-sType-sType",
33751          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT</code>"
33752        }
33753      ]
33754    },
33755    "VkPhysicalDeviceSampleLocationsPropertiesEXT": {
33756      "(VK_EXT_sample_locations)": [
33757        {
33758          "vuid": "VUID-VkPhysicalDeviceSampleLocationsPropertiesEXT-sType-sType",
33759          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT</code>"
33760        }
33761      ]
33762    },
33763    "VkPhysicalDeviceExternalMemoryHostPropertiesEXT": {
33764      "(VK_EXT_external_memory_host)": [
33765        {
33766          "vuid": "VUID-VkPhysicalDeviceExternalMemoryHostPropertiesEXT-sType-sType",
33767          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT</code>"
33768        }
33769      ]
33770    },
33771    "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX": {
33772      "(VK_NVX_multiview_per_view_attributes)": [
33773        {
33774          "vuid": "VUID-VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX-sType-sType",
33775          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX</code>"
33776        }
33777      ]
33778    },
33779    "VkPhysicalDevicePointClippingProperties": {
33780      "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
33781        {
33782          "vuid": "VUID-VkPhysicalDevicePointClippingProperties-sType-sType",
33783          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES</code>"
33784        }
33785      ]
33786    },
33787    "VkPhysicalDeviceSubgroupProperties": {
33788      "(VK_VERSION_1_1)": [
33789        {
33790          "vuid": "VUID-VkPhysicalDeviceSubgroupProperties-sType-sType",
33791          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES</code>"
33792        }
33793      ]
33794    },
33795    "VkPhysicalDeviceSubgroupSizeControlPropertiesEXT": {
33796      "(VK_VERSION_1_1)+(VK_EXT_subgroup_size_control)": [
33797        {
33798          "vuid": "VUID-VkPhysicalDeviceSubgroupSizeControlPropertiesEXT-sType-sType",
33799          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT</code>"
33800        }
33801      ]
33802    },
33803    "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT": {
33804      "(VK_EXT_blend_operation_advanced)": [
33805        {
33806          "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT-sType-sType",
33807          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT</code>"
33808        }
33809      ]
33810    },
33811    "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT": {
33812      "(VK_EXT_vertex_attribute_divisor)": [
33813        {
33814          "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT-sType-sType",
33815          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT</code>"
33816        }
33817      ]
33818    },
33819    "VkPhysicalDeviceSamplerFilterMinmaxProperties": {
33820      "(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [
33821        {
33822          "vuid": "VUID-VkPhysicalDeviceSamplerFilterMinmaxProperties-sType-sType",
33823          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES</code>"
33824        }
33825      ]
33826    },
33827    "VkPhysicalDeviceProtectedMemoryProperties": {
33828      "(VK_VERSION_1_1)": [
33829        {
33830          "vuid": "VUID-VkPhysicalDeviceProtectedMemoryProperties-sType-sType",
33831          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES</code>"
33832        }
33833      ]
33834    },
33835    "VkPhysicalDeviceMaintenance3Properties": {
33836      "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
33837        {
33838          "vuid": "VUID-VkPhysicalDeviceMaintenance3Properties-sType-sType",
33839          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES</code>"
33840        }
33841      ]
33842    },
33843    "VkPhysicalDeviceMeshShaderPropertiesNV": {
33844      "(VK_NV_mesh_shader)": [
33845        {
33846          "vuid": "VUID-VkPhysicalDeviceMeshShaderPropertiesNV-sType-sType",
33847          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV</code>"
33848        }
33849      ]
33850    },
33851    "VkPhysicalDeviceDescriptorIndexingProperties": {
33852      "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
33853        {
33854          "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingProperties-sType-sType",
33855          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES</code>"
33856        }
33857      ]
33858    },
33859    "VkPhysicalDeviceInlineUniformBlockPropertiesEXT": {
33860      "(VK_EXT_inline_uniform_block)": [
33861        {
33862          "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockPropertiesEXT-sType-sType",
33863          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT</code>"
33864        }
33865      ]
33866    },
33867    "VkPhysicalDeviceConservativeRasterizationPropertiesEXT": {
33868      "(VK_EXT_conservative_rasterization)": [
33869        {
33870          "vuid": "VUID-VkPhysicalDeviceConservativeRasterizationPropertiesEXT-sType-sType",
33871          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT</code>"
33872        }
33873      ]
33874    },
33875    "VkPhysicalDeviceFragmentDensityMapPropertiesEXT": {
33876      "(VK_EXT_fragment_density_map)": [
33877        {
33878          "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapPropertiesEXT-sType-sType",
33879          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT</code>"
33880        }
33881      ]
33882    },
33883    "VkPhysicalDeviceFragmentDensityMap2PropertiesEXT": {
33884      "(VK_EXT_fragment_density_map2)": [
33885        {
33886          "vuid": "VUID-VkPhysicalDeviceFragmentDensityMap2PropertiesEXT-sType-sType",
33887          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT</code>"
33888        }
33889      ]
33890    },
33891    "VkPhysicalDeviceShaderCorePropertiesAMD": {
33892      "(VK_AMD_shader_core_properties)": [
33893        {
33894          "vuid": "VUID-VkPhysicalDeviceShaderCorePropertiesAMD-sType-sType",
33895          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD</code>"
33896        }
33897      ]
33898    },
33899    "VkPhysicalDeviceShaderCoreProperties2AMD": {
33900      "(VK_AMD_shader_core_properties2)": [
33901        {
33902          "vuid": "VUID-VkPhysicalDeviceShaderCoreProperties2AMD-sType-sType",
33903          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD</code>"
33904        }
33905      ]
33906    },
33907    "VkPhysicalDeviceDepthStencilResolveProperties": {
33908      "(VK_VERSION_1_2,VK_KHR_depth_stencil_resolve)": [
33909        {
33910          "vuid": "VUID-VkPhysicalDeviceDepthStencilResolveProperties-sType-sType",
33911          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES</code>"
33912        }
33913      ]
33914    },
33915    "VkPhysicalDevicePerformanceQueryPropertiesKHR": {
33916      "(VK_KHR_performance_query)": [
33917        {
33918          "vuid": "VUID-VkPhysicalDevicePerformanceQueryPropertiesKHR-sType-sType",
33919          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR</code>"
33920        }
33921      ]
33922    },
33923    "VkPhysicalDeviceShadingRateImagePropertiesNV": {
33924      "(VK_NV_shading_rate_image)": [
33925        {
33926          "vuid": "VUID-VkPhysicalDeviceShadingRateImagePropertiesNV-sType-sType",
33927          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV</code>"
33928        }
33929      ]
33930    },
33931    "VkPhysicalDeviceTransformFeedbackPropertiesEXT": {
33932      "(VK_EXT_transform_feedback)": [
33933        {
33934          "vuid": "VUID-VkPhysicalDeviceTransformFeedbackPropertiesEXT-sType-sType",
33935          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT</code>"
33936        }
33937      ]
33938    },
33939    "VkPhysicalDeviceRayTracingPropertiesNV": {
33940      "(VK_NV_ray_tracing)": [
33941        {
33942          "vuid": "VUID-VkPhysicalDeviceRayTracingPropertiesNV-sType-sType",
33943          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV</code>"
33944        }
33945      ]
33946    },
33947    "VkPhysicalDeviceRayTracingPropertiesKHR": {
33948      "(VK_KHR_ray_tracing)": [
33949        {
33950          "vuid": "VUID-VkPhysicalDeviceRayTracingPropertiesKHR-sType-sType",
33951          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR</code>"
33952        }
33953      ]
33954    },
33955    "VkPhysicalDeviceCooperativeMatrixPropertiesNV": {
33956      "(VK_NV_cooperative_matrix)": [
33957        {
33958          "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixPropertiesNV-sType-sType",
33959          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>"
33960        }
33961      ]
33962    },
33963    "VkPhysicalDeviceShaderSMBuiltinsPropertiesNV": {
33964      "(VK_NV_shader_sm_builtins)": [
33965        {
33966          "vuid": "VUID-VkPhysicalDeviceShaderSMBuiltinsPropertiesNV-sType-sType",
33967          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV</code>"
33968        }
33969      ]
33970    },
33971    "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT": {
33972      "(VK_EXT_texel_buffer_alignment)": [
33973        {
33974          "vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT-sType-sType",
33975          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT</code>"
33976        }
33977      ]
33978    },
33979    "VkPhysicalDeviceTimelineSemaphoreProperties": {
33980      "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
33981        {
33982          "vuid": "VUID-VkPhysicalDeviceTimelineSemaphoreProperties-sType-sType",
33983          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES</code>"
33984        }
33985      ]
33986    },
33987    "VkPhysicalDeviceLineRasterizationPropertiesEXT": {
33988      "(VK_EXT_line_rasterization)": [
33989        {
33990          "vuid": "VUID-VkPhysicalDeviceLineRasterizationPropertiesEXT-sType-sType",
33991          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT</code>"
33992        }
33993      ]
33994    },
33995    "VkPhysicalDeviceRobustness2PropertiesEXT": {
33996      "(VK_EXT_robustness2)": [
33997        {
33998          "vuid": "VUID-VkPhysicalDeviceRobustness2PropertiesEXT-sType-sType",
33999          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT</code>"
34000        }
34001      ]
34002    },
34003    "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV": {
34004      "(VK_NV_device_generated_commands)": [
34005        {
34006          "vuid": "VUID-VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV-sType-sType",
34007          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV</code>"
34008        }
34009      ]
34010    },
34011    "VkPhysicalDevicePortabilitySubsetPropertiesKHR": {
34012      "(VK_KHR_portability_subset)": [
34013        {
34014          "vuid": "VUID-VkPhysicalDevicePortabilitySubsetPropertiesKHR-sType-sType",
34015          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR</code>"
34016        }
34017      ]
34018    },
34019    "VkPhysicalDeviceFragmentShadingRatePropertiesKHR": {
34020      "(VK_KHR_fragment_shading_rate)": [
34021        {
34022          "vuid": "VUID-VkPhysicalDeviceFragmentShadingRatePropertiesKHR-sType-sType",
34023          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR</code>"
34024        }
34025      ]
34026    },
34027    "vkGetPhysicalDeviceMultisamplePropertiesEXT": {
34028      "(VK_EXT_sample_locations)": [
34029        {
34030          "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter",
34031          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
34032        },
34033        {
34034          "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter",
34035          "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
34036        },
34037        {
34038          "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-pMultisampleProperties-parameter",
34039          "text": " <code>pMultisampleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a> structure"
34040        }
34041      ]
34042    },
34043    "VkMultisamplePropertiesEXT": {
34044      "(VK_EXT_sample_locations)": [
34045        {
34046          "vuid": "VUID-VkMultisamplePropertiesEXT-sType-sType",
34047          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT</code>"
34048        },
34049        {
34050          "vuid": "VUID-VkMultisamplePropertiesEXT-pNext-pNext",
34051          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
34052        }
34053      ]
34054    },
34055    "VkPhysicalDeviceCustomBorderColorPropertiesEXT": {
34056      "(VK_EXT_custom_border_color)": [
34057        {
34058          "vuid": "VUID-VkPhysicalDeviceCustomBorderColorPropertiesEXT-sType-sType",
34059          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT</code>"
34060        }
34061      ]
34062    },
34063    "vkGetPhysicalDeviceFormatProperties": {
34064      "core": [
34065        {
34066          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter",
34067          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
34068        },
34069        {
34070          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-format-parameter",
34071          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
34072        },
34073        {
34074          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-pFormatProperties-parameter",
34075          "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFormatProperties\">VkFormatProperties</a> structure"
34076        }
34077      ]
34078    },
34079    "vkGetPhysicalDeviceFormatProperties2": {
34080      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
34081        {
34082          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter",
34083          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
34084        },
34085        {
34086          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-format-parameter",
34087          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
34088        },
34089        {
34090          "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-pFormatProperties-parameter",
34091          "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFormatProperties2\">VkFormatProperties2</a> structure"
34092        }
34093      ]
34094    },
34095    "VkFormatProperties2": {
34096      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
34097        {
34098          "vuid": "VUID-VkFormatProperties2-sType-sType",
34099          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2</code>"
34100        },
34101        {
34102          "vuid": "VUID-VkFormatProperties2-pNext-pNext",
34103          "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>"
34104        },
34105        {
34106          "vuid": "VUID-VkFormatProperties2-sType-unique",
34107          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
34108        }
34109      ]
34110    },
34111    "VkDrmFormatModifierPropertiesListEXT": {
34112      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
34113        {
34114          "vuid": "VUID-VkDrmFormatModifierPropertiesListEXT-sType-sType",
34115          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT</code>"
34116        }
34117      ]
34118    },
34119    "vkGetPhysicalDeviceImageFormatProperties": {
34120      "(VK_EXT_image_drm_format_modifier)": [
34121        {
34122          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-02248",
34123          "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)"
34124        }
34125      ],
34126      "core": [
34127        {
34128          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter",
34129          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
34130        },
34131        {
34132          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter",
34133          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
34134        },
34135        {
34136          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-type-parameter",
34137          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
34138        },
34139        {
34140          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter",
34141          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
34142        },
34143        {
34144          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter",
34145          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
34146        },
34147        {
34148          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask",
34149          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
34150        },
34151        {
34152          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter",
34153          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
34154        },
34155        {
34156          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-pImageFormatProperties-parameter",
34157          "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageFormatProperties\">VkImageFormatProperties</a> structure"
34158        }
34159      ]
34160    },
34161    "vkGetPhysicalDeviceExternalImageFormatPropertiesNV": {
34162      "(VK_NV_external_memory_capabilities)": [
34163        {
34164          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-physicalDevice-parameter",
34165          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
34166        },
34167        {
34168          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-format-parameter",
34169          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
34170        },
34171        {
34172          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-type-parameter",
34173          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
34174        },
34175        {
34176          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-tiling-parameter",
34177          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
34178        },
34179        {
34180          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-parameter",
34181          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
34182        },
34183        {
34184          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-requiredbitmask",
34185          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
34186        },
34187        {
34188          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-flags-parameter",
34189          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
34190        },
34191        {
34192          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-parameter",
34193          "text": " <code>externalHandleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
34194        },
34195        {
34196          "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-pExternalImageFormatProperties-parameter",
34197          "text": " <code>pExternalImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalImageFormatPropertiesNV\">VkExternalImageFormatPropertiesNV</a> structure"
34198        }
34199      ]
34200    },
34201    "vkGetPhysicalDeviceImageFormatProperties2": {
34202      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
34203        {
34204          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-01868",
34205          "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>"
34206        }
34207      ],
34208      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
34209        {
34210          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter",
34211          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
34212        },
34213        {
34214          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatInfo-parameter",
34215          "text": " <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> structure"
34216        },
34217        {
34218          "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatProperties-parameter",
34219          "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageFormatProperties2\">VkImageFormatProperties2</a> structure"
34220        }
34221      ]
34222    },
34223    "VkPhysicalDeviceImageFormatInfo2": {
34224      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
34225        {
34226          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02249",
34227          "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>"
34228        },
34229        {
34230          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02313",
34231          "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>"
34232        }
34233      ],
34234      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
34235        {
34236          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType",
34237          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2</code>"
34238        },
34239        {
34240          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext",
34241          "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>"
34242        },
34243        {
34244          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-unique",
34245          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
34246        },
34247        {
34248          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter",
34249          "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
34250        },
34251        {
34252          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-type-parameter",
34253          "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
34254        },
34255        {
34256          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-parameter",
34257          "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
34258        },
34259        {
34260          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-parameter",
34261          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
34262        },
34263        {
34264          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-requiredbitmask",
34265          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
34266        },
34267        {
34268          "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-flags-parameter",
34269          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
34270        }
34271      ]
34272    },
34273    "VkImageFormatProperties2": {
34274      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
34275        {
34276          "vuid": "VUID-VkImageFormatProperties2-sType-sType",
34277          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2</code>"
34278        },
34279        {
34280          "vuid": "VUID-VkImageFormatProperties2-pNext-pNext",
34281          "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>"
34282        },
34283        {
34284          "vuid": "VUID-VkImageFormatProperties2-sType-unique",
34285          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
34286        }
34287      ]
34288    },
34289    "VkTextureLODGatherFormatPropertiesAMD": {
34290      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_AMD_texture_gather_bias_lod)": [
34291        {
34292          "vuid": "VUID-VkTextureLODGatherFormatPropertiesAMD-sType-sType",
34293          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD</code>"
34294        }
34295      ]
34296    },
34297    "VkPhysicalDeviceExternalImageFormatInfo": {
34298      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
34299        {
34300          "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-sType-sType",
34301          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO</code>"
34302        },
34303        {
34304          "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-handleType-parameter",
34305          "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"
34306        }
34307      ]
34308    },
34309    "VkExternalImageFormatProperties": {
34310      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
34311        {
34312          "vuid": "VUID-VkExternalImageFormatProperties-sType-sType",
34313          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES</code>"
34314        }
34315      ]
34316    },
34317    "VkPhysicalDeviceImageDrmFormatModifierInfoEXT": {
34318      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
34319        {
34320          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314",
34321          "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"
34322        },
34323        {
34324          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315",
34325          "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>"
34326        },
34327        {
34328          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02316",
34329          "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>"
34330        },
34331        {
34332          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sType-sType",
34333          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT</code>"
34334        },
34335        {
34336          "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-parameter",
34337          "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
34338        }
34339      ]
34340    },
34341    "VkSamplerYcbcrConversionImageFormatProperties": {
34342      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
34343        {
34344          "vuid": "VUID-VkSamplerYcbcrConversionImageFormatProperties-sType-sType",
34345          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES</code>"
34346        }
34347      ]
34348    },
34349    "VkAndroidHardwareBufferUsageANDROID": {
34350      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
34351        {
34352          "vuid": "VUID-VkAndroidHardwareBufferUsageANDROID-sType-sType",
34353          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID</code>"
34354        }
34355      ]
34356    },
34357    "VkPhysicalDeviceImageViewImageFormatInfoEXT": {
34358      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [
34359        {
34360          "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-sType-sType",
34361          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT</code>"
34362        },
34363        {
34364          "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-imageViewType-parameter",
34365          "text": " <code>imageViewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value"
34366        }
34367      ]
34368    },
34369    "VkFilterCubicImageViewImageFormatPropertiesEXT": {
34370      "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [
34371        {
34372          "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-sType-sType",
34373          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT</code>"
34374        },
34375        {
34376          "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-pNext-02627",
34377          "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>"
34378        }
34379      ]
34380    },
34381    "vkGetPhysicalDeviceExternalBufferProperties": {
34382      "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
34383        {
34384          "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter",
34385          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
34386        },
34387        {
34388          "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferInfo-parameter",
34389          "text": " <code>pExternalBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceExternalBufferInfo\">VkPhysicalDeviceExternalBufferInfo</a> structure"
34390        },
34391        {
34392          "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferProperties-parameter",
34393          "text": " <code>pExternalBufferProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a> structure"
34394        }
34395      ]
34396    },
34397    "VkPhysicalDeviceExternalBufferInfo": {
34398      "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
34399        {
34400          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-sType-sType",
34401          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO</code>"
34402        },
34403        {
34404          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-pNext-pNext",
34405          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
34406        },
34407        {
34408          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter",
34409          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values"
34410        },
34411        {
34412          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-parameter",
34413          "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values"
34414        },
34415        {
34416          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-requiredbitmask",
34417          "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
34418        },
34419        {
34420          "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter",
34421          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
34422        }
34423      ]
34424    },
34425    "VkExternalBufferProperties": {
34426      "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
34427        {
34428          "vuid": "VUID-VkExternalBufferProperties-sType-sType",
34429          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES</code>"
34430        },
34431        {
34432          "vuid": "VUID-VkExternalBufferProperties-pNext-pNext",
34433          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
34434        }
34435      ]
34436    },
34437    "vkGetPhysicalDeviceExternalSemaphoreProperties": {
34438      "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
34439        {
34440          "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter",
34441          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
34442        },
34443        {
34444          "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreInfo-parameter",
34445          "text": " <code>pExternalSemaphoreInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceExternalSemaphoreInfo\">VkPhysicalDeviceExternalSemaphoreInfo</a> structure"
34446        },
34447        {
34448          "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreProperties-parameter",
34449          "text": " <code>pExternalSemaphoreProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a> structure"
34450        }
34451      ]
34452    },
34453    "VkPhysicalDeviceExternalSemaphoreInfo": {
34454      "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
34455        {
34456          "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-sType",
34457          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO</code>"
34458        },
34459        {
34460          "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-pNext-pNext",
34461          "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>"
34462        },
34463        {
34464          "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-unique",
34465          "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
34466        },
34467        {
34468          "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter",
34469          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
34470        }
34471      ]
34472    },
34473    "VkExternalSemaphoreProperties": {
34474      "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
34475        {
34476          "vuid": "VUID-VkExternalSemaphoreProperties-sType-sType",
34477          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES</code>"
34478        },
34479        {
34480          "vuid": "VUID-VkExternalSemaphoreProperties-pNext-pNext",
34481          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
34482        }
34483      ]
34484    },
34485    "vkGetPhysicalDeviceExternalFenceProperties": {
34486      "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
34487        {
34488          "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter",
34489          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
34490        },
34491        {
34492          "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceInfo-parameter",
34493          "text": " <code>pExternalFenceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceExternalFenceInfo\">VkPhysicalDeviceExternalFenceInfo</a> structure"
34494        },
34495        {
34496          "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceProperties-parameter",
34497          "text": " <code>pExternalFenceProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a> structure"
34498        }
34499      ]
34500    },
34501    "VkPhysicalDeviceExternalFenceInfo": {
34502      "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
34503        {
34504          "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-sType-sType",
34505          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO</code>"
34506        },
34507        {
34508          "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-pNext-pNext",
34509          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
34510        },
34511        {
34512          "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter",
34513          "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
34514        }
34515      ]
34516    },
34517    "VkExternalFenceProperties": {
34518      "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
34519        {
34520          "vuid": "VUID-VkExternalFenceProperties-sType-sType",
34521          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES</code>"
34522        },
34523        {
34524          "vuid": "VUID-VkExternalFenceProperties-pNext-pNext",
34525          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
34526        }
34527      ]
34528    },
34529    "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT": {
34530      "(VK_EXT_calibrated_timestamps)": [
34531        {
34532          "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-physicalDevice-parameter",
34533          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
34534        },
34535        {
34536          "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomainCount-parameter",
34537          "text": " <code>pTimeDomainCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
34538        },
34539        {
34540          "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomains-parameter",
34541          "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"
34542        }
34543      ]
34544    },
34545    "vkSetDebugUtilsObjectNameEXT": {
34546      "(VK_EXT_debug_utils)": [
34547        {
34548          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02587",
34549          "text": " <code>pNameInfo-&gt;objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
34550        },
34551        {
34552          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02588",
34553          "text": " <code>pNameInfo-&gt;objectHandle</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
34554        },
34555        {
34556          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-device-parameter",
34557          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
34558        },
34559        {
34560          "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-parameter",
34561          "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsObjectNameInfoEXT\">VkDebugUtilsObjectNameInfoEXT</a> structure"
34562        }
34563      ]
34564    },
34565    "VkDebugUtilsObjectNameInfoEXT": {
34566      "(VK_EXT_debug_utils)": [
34567        {
34568          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589",
34569          "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>"
34570        },
34571        {
34572          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02590",
34573          "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\"><code>VkObjectType</code> and Vulkan Handle Relationship</a> table"
34574        },
34575        {
34576          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType",
34577          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT</code>"
34578        },
34579        {
34580          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pNext-pNext",
34581          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
34582        },
34583        {
34584          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter",
34585          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
34586        },
34587        {
34588          "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pObjectName-parameter",
34589          "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"
34590        }
34591      ]
34592    },
34593    "vkSetDebugUtilsObjectTagEXT": {
34594      "(VK_EXT_debug_utils)": [
34595        {
34596          "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-device-parameter",
34597          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
34598        },
34599        {
34600          "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-pTagInfo-parameter",
34601          "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsObjectTagInfoEXT\">VkDebugUtilsObjectTagInfoEXT</a> structure"
34602        }
34603      ]
34604    },
34605    "VkDebugUtilsObjectTagInfoEXT": {
34606      "(VK_EXT_debug_utils)": [
34607        {
34608          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-01908",
34609          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
34610        },
34611        {
34612          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910",
34613          "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\"><code>VkObjectType</code> and Vulkan Handle Relationship</a> table"
34614        },
34615        {
34616          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-sType-sType",
34617          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT</code>"
34618        },
34619        {
34620          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pNext-pNext",
34621          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
34622        },
34623        {
34624          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter",
34625          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
34626        },
34627        {
34628          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter",
34629          "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes"
34630        },
34631        {
34632          "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength",
34633          "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
34634        }
34635      ]
34636    },
34637    "vkQueueBeginDebugUtilsLabelEXT": {
34638      "(VK_EXT_debug_utils)": [
34639        {
34640          "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter",
34641          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
34642        },
34643        {
34644          "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
34645          "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure"
34646        }
34647      ]
34648    },
34649    "VkDebugUtilsLabelEXT": {
34650      "(VK_EXT_debug_utils)": [
34651        {
34652          "vuid": "VUID-VkDebugUtilsLabelEXT-sType-sType",
34653          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT</code>"
34654        },
34655        {
34656          "vuid": "VUID-VkDebugUtilsLabelEXT-pNext-pNext",
34657          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
34658        },
34659        {
34660          "vuid": "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter",
34661          "text": " <code>pLabelName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
34662        }
34663      ]
34664    },
34665    "vkQueueEndDebugUtilsLabelEXT": {
34666      "(VK_EXT_debug_utils)": [
34667        {
34668          "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-None-01911",
34669          "text": " There <strong class=\"purple\">must</strong> be an outstanding <code>vkQueueBeginDebugUtilsLabelEXT</code> command prior to the <code>vkQueueEndDebugUtilsLabelEXT</code> on the queue"
34670        },
34671        {
34672          "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter",
34673          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
34674        }
34675      ]
34676    },
34677    "vkQueueInsertDebugUtilsLabelEXT": {
34678      "(VK_EXT_debug_utils)": [
34679        {
34680          "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter",
34681          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
34682        },
34683        {
34684          "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
34685          "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure"
34686        }
34687      ]
34688    },
34689    "vkCmdBeginDebugUtilsLabelEXT": {
34690      "(VK_EXT_debug_utils)": [
34691        {
34692          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter",
34693          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
34694        },
34695        {
34696          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
34697          "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure"
34698        },
34699        {
34700          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-recording",
34701          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
34702        },
34703        {
34704          "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-cmdpool",
34705          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
34706        }
34707      ]
34708    },
34709    "vkCmdEndDebugUtilsLabelEXT": {
34710      "(VK_EXT_debug_utils)": [
34711        {
34712          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912",
34713          "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"
34714        },
34715        {
34716          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01913",
34717          "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>"
34718        },
34719        {
34720          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter",
34721          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
34722        },
34723        {
34724          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-recording",
34725          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
34726        },
34727        {
34728          "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-cmdpool",
34729          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
34730        }
34731      ]
34732    },
34733    "vkCmdInsertDebugUtilsLabelEXT": {
34734      "(VK_EXT_debug_utils)": [
34735        {
34736          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter",
34737          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
34738        },
34739        {
34740          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
34741          "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure"
34742        },
34743        {
34744          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-recording",
34745          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
34746        },
34747        {
34748          "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-cmdpool",
34749          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
34750        }
34751      ]
34752    },
34753    "vkCreateDebugUtilsMessengerEXT": {
34754      "(VK_EXT_debug_utils)": [
34755        {
34756          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-instance-parameter",
34757          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
34758        },
34759        {
34760          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pCreateInfo-parameter",
34761          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a> structure"
34762        },
34763        {
34764          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pAllocator-parameter",
34765          "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"
34766        },
34767        {
34768          "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pMessenger-parameter",
34769          "text": " <code>pMessenger</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDebugUtilsMessengerEXT\">VkDebugUtilsMessengerEXT</a> handle"
34770        }
34771      ]
34772    },
34773    "VkDebugUtilsMessengerCreateInfoEXT": {
34774      "(VK_EXT_debug_utils)": [
34775        {
34776          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-01914",
34777          "text": " <code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugUtilsMessengerCallbackEXT\">PFN_vkDebugUtilsMessengerCallbackEXT</a>"
34778        },
34779        {
34780          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-sType-sType",
34781          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT</code>"
34782        },
34783        {
34784          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-flags-zerobitmask",
34785          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
34786        },
34787        {
34788          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-parameter",
34789          "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> values"
34790        },
34791        {
34792          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-requiredbitmask",
34793          "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
34794        },
34795        {
34796          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter",
34797          "text": " <code>messageType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values"
34798        },
34799        {
34800          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-requiredbitmask",
34801          "text": " <code>messageType</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
34802        },
34803        {
34804          "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-parameter",
34805          "text": " <code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugUtilsMessengerCallbackEXT\">PFN_vkDebugUtilsMessengerCallbackEXT</a> value"
34806        }
34807      ]
34808    },
34809    "VkDebugUtilsMessengerCallbackDataEXT": {
34810      "(VK_EXT_debug_utils)": [
34811        {
34812          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-sType",
34813          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT</code>"
34814        },
34815        {
34816          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pNext-pNext",
34817          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
34818        },
34819        {
34820          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-flags-zerobitmask",
34821          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
34822        },
34823        {
34824          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessageIdName-parameter",
34825          "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"
34826        },
34827        {
34828          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessage-parameter",
34829          "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
34830        },
34831        {
34832          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pQueueLabels-parameter",
34833          "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"
34834        },
34835        {
34836          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pCmdBufLabels-parameter",
34837          "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"
34838        },
34839        {
34840          "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pObjects-parameter",
34841          "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"
34842        }
34843      ]
34844    },
34845    "vkSubmitDebugUtilsMessageEXT": {
34846      "(VK_EXT_debug_utils)": [
34847        {
34848          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-objectType-02591",
34849          "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>"
34850        },
34851        {
34852          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-instance-parameter",
34853          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
34854        },
34855        {
34856          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageSeverity-parameter",
34857          "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> value"
34858        },
34859        {
34860          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-parameter",
34861          "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values"
34862        },
34863        {
34864          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-requiredbitmask",
34865          "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
34866        },
34867        {
34868          "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-pCallbackData-parameter",
34869          "text": " <code>pCallbackData</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsMessengerCallbackDataEXT\">VkDebugUtilsMessengerCallbackDataEXT</a> structure"
34870        }
34871      ]
34872    },
34873    "vkDestroyDebugUtilsMessengerEXT": {
34874      "(VK_EXT_debug_utils)": [
34875        {
34876          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01915",
34877          "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"
34878        },
34879        {
34880          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01916",
34881          "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>"
34882        },
34883        {
34884          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-instance-parameter",
34885          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
34886        },
34887        {
34888          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parameter",
34889          "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"
34890        },
34891        {
34892          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-pAllocator-parameter",
34893          "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"
34894        },
34895        {
34896          "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parent",
34897          "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>"
34898        }
34899      ]
34900    },
34901    "vkDebugMarkerSetObjectNameEXT": {
34902      "(VK_EXT_debug_marker)": [
34903        {
34904          "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-device-parameter",
34905          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
34906        },
34907        {
34908          "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter",
34909          "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerObjectNameInfoEXT\">VkDebugMarkerObjectNameInfoEXT</a> structure"
34910        }
34911      ]
34912    },
34913    "VkDebugMarkerObjectNameInfoEXT": {
34914      "(VK_EXT_debug_marker)": [
34915        {
34916          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-01490",
34917          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>"
34918        },
34919        {
34920          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01491",
34921          "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
34922        },
34923        {
34924          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01492",
34925          "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\"><code>VkDebugReportObjectTypeEXT</code> and Vulkan Handle Relationship</a>"
34926        },
34927        {
34928          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-sType-sType",
34929          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT</code>"
34930        },
34931        {
34932          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pNext-pNext",
34933          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
34934        },
34935        {
34936          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter",
34937          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
34938        },
34939        {
34940          "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter",
34941          "text": " <code>pObjectName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
34942        }
34943      ]
34944    },
34945    "vkDebugMarkerSetObjectTagEXT": {
34946      "(VK_EXT_debug_marker)": [
34947        {
34948          "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-device-parameter",
34949          "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
34950        },
34951        {
34952          "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter",
34953          "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerObjectTagInfoEXT\">VkDebugMarkerObjectTagInfoEXT</a> structure"
34954        }
34955      ]
34956    },
34957    "VkDebugMarkerObjectTagInfoEXT": {
34958      "(VK_EXT_debug_marker)": [
34959        {
34960          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-01493",
34961          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>"
34962        },
34963        {
34964          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01494",
34965          "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
34966        },
34967        {
34968          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01495",
34969          "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\"><code>VkDebugReportObjectTypeEXT</code> and Vulkan Handle Relationship</a>"
34970        },
34971        {
34972          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-sType-sType",
34973          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT</code>"
34974        },
34975        {
34976          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pNext-pNext",
34977          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
34978        },
34979        {
34980          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter",
34981          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
34982        },
34983        {
34984          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter",
34985          "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes"
34986        },
34987        {
34988          "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength",
34989          "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
34990        }
34991      ]
34992    },
34993    "vkCmdDebugMarkerBeginEXT": {
34994      "(VK_EXT_debug_marker)": [
34995        {
34996          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter",
34997          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
34998        },
34999        {
35000          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-pMarkerInfo-parameter",
35001          "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerMarkerInfoEXT\">VkDebugMarkerMarkerInfoEXT</a> structure"
35002        },
35003        {
35004          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-recording",
35005          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
35006        },
35007        {
35008          "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-cmdpool",
35009          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
35010        }
35011      ]
35012    },
35013    "VkDebugMarkerMarkerInfoEXT": {
35014      "(VK_EXT_debug_marker)": [
35015        {
35016          "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-sType-sType",
35017          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT</code>"
35018        },
35019        {
35020          "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pNext-pNext",
35021          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
35022        },
35023        {
35024          "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pMarkerName-parameter",
35025          "text": " <code>pMarkerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
35026        }
35027      ]
35028    },
35029    "vkCmdDebugMarkerEndEXT": {
35030      "(VK_EXT_debug_marker)": [
35031        {
35032          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01239",
35033          "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"
35034        },
35035        {
35036          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01240",
35037          "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>"
35038        },
35039        {
35040          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter",
35041          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
35042        },
35043        {
35044          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-recording",
35045          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
35046        },
35047        {
35048          "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-cmdpool",
35049          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
35050        }
35051      ]
35052    },
35053    "vkCmdDebugMarkerInsertEXT": {
35054      "(VK_EXT_debug_marker)": [
35055        {
35056          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter",
35057          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
35058        },
35059        {
35060          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-pMarkerInfo-parameter",
35061          "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerMarkerInfoEXT\">VkDebugMarkerMarkerInfoEXT</a> structure"
35062        },
35063        {
35064          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-recording",
35065          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
35066        },
35067        {
35068          "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-cmdpool",
35069          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
35070        }
35071      ]
35072    },
35073    "vkCreateDebugReportCallbackEXT": {
35074      "(VK_EXT_debug_report)": [
35075        {
35076          "vuid": "VUID-vkCreateDebugReportCallbackEXT-instance-parameter",
35077          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
35078        },
35079        {
35080          "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCreateInfo-parameter",
35081          "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugReportCallbackCreateInfoEXT\">VkDebugReportCallbackCreateInfoEXT</a> structure"
35082        },
35083        {
35084          "vuid": "VUID-vkCreateDebugReportCallbackEXT-pAllocator-parameter",
35085          "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"
35086        },
35087        {
35088          "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCallback-parameter",
35089          "text": " <code>pCallback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDebugReportCallbackEXT\">VkDebugReportCallbackEXT</a> handle"
35090        }
35091      ]
35092    },
35093    "VkDebugReportCallbackCreateInfoEXT": {
35094      "(VK_EXT_debug_report)": [
35095        {
35096          "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-sType-sType",
35097          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT</code>"
35098        },
35099        {
35100          "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-flags-parameter",
35101          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values"
35102        },
35103        {
35104          "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-parameter",
35105          "text": " <code>pfnCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugReportCallbackEXT\">PFN_vkDebugReportCallbackEXT</a> value"
35106        }
35107      ]
35108    },
35109    "vkDebugReportMessageEXT": {
35110      "(VK_EXT_debug_report)": [
35111        {
35112          "vuid": "VUID-vkDebugReportMessageEXT-object-01241",
35113          "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
35114        },
35115        {
35116          "vuid": "VUID-vkDebugReportMessageEXT-objectType-01498",
35117          "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\"><code>VkDebugReportObjectTypeEXT</code> and Vulkan Handle Relationship</a>"
35118        },
35119        {
35120          "vuid": "VUID-vkDebugReportMessageEXT-instance-parameter",
35121          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
35122        },
35123        {
35124          "vuid": "VUID-vkDebugReportMessageEXT-flags-parameter",
35125          "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values"
35126        },
35127        {
35128          "vuid": "VUID-vkDebugReportMessageEXT-flags-requiredbitmask",
35129          "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
35130        },
35131        {
35132          "vuid": "VUID-vkDebugReportMessageEXT-objectType-parameter",
35133          "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
35134        },
35135        {
35136          "vuid": "VUID-vkDebugReportMessageEXT-pLayerPrefix-parameter",
35137          "text": " <code>pLayerPrefix</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
35138        },
35139        {
35140          "vuid": "VUID-vkDebugReportMessageEXT-pMessage-parameter",
35141          "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
35142        }
35143      ]
35144    },
35145    "vkDestroyDebugReportCallbackEXT": {
35146      "(VK_EXT_debug_report)": [
35147        {
35148          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01242",
35149          "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"
35150        },
35151        {
35152          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01243",
35153          "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>"
35154        },
35155        {
35156          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-parameter",
35157          "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
35158        },
35159        {
35160          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parameter",
35161          "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"
35162        },
35163        {
35164          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-pAllocator-parameter",
35165          "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"
35166        },
35167        {
35168          "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parent",
35169          "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>"
35170        }
35171      ]
35172    },
35173    "vkCmdSetCheckpointNV": {
35174      "(VK_NV_device_diagnostic_checkpoints)": [
35175        {
35176          "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-parameter",
35177          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
35178        },
35179        {
35180          "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-recording",
35181          "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
35182        },
35183        {
35184          "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-cmdpool",
35185          "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
35186        }
35187      ]
35188    },
35189    "vkGetQueueCheckpointDataNV": {
35190      "(VK_NV_device_diagnostic_checkpoints)": [
35191        {
35192          "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-02025",
35193          "text": " The device that <code>queue</code> belongs to <strong class=\"purple\">must</strong> be in the lost state"
35194        },
35195        {
35196          "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-parameter",
35197          "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
35198        },
35199        {
35200          "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointDataCount-parameter",
35201          "text": " <code>pCheckpointDataCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
35202        },
35203        {
35204          "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointData-parameter",
35205          "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"
35206        }
35207      ]
35208    },
35209    "VkCheckpointDataNV": {
35210      "(VK_NV_device_diagnostic_checkpoints)": [
35211        {
35212          "vuid": "VUID-VkCheckpointDataNV-sType-sType",
35213          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV</code>"
35214        },
35215        {
35216          "vuid": "VUID-VkCheckpointDataNV-pNext-pNext",
35217          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
35218        }
35219      ]
35220    },
35221    "vkGetPhysicalDeviceToolPropertiesEXT": {
35222      "(VK_EXT_tooling_info)": [
35223        {
35224          "vuid": "VUID-vkGetPhysicalDeviceToolPropertiesEXT-physicalDevice-parameter",
35225          "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
35226        },
35227        {
35228          "vuid": "VUID-vkGetPhysicalDeviceToolPropertiesEXT-pToolCount-parameter",
35229          "text": " <code>pToolCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
35230        },
35231        {
35232          "vuid": "VUID-vkGetPhysicalDeviceToolPropertiesEXT-pToolProperties-parameter",
35233          "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"
35234        }
35235      ]
35236    },
35237    "VkPhysicalDeviceToolPropertiesEXT": {
35238      "(VK_EXT_tooling_info)": [
35239        {
35240          "vuid": "VUID-VkPhysicalDeviceToolPropertiesEXT-sType-sType",
35241          "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT</code>"
35242        },
35243        {
35244          "vuid": "VUID-VkPhysicalDeviceToolPropertiesEXT-pNext-pNext",
35245          "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
35246        }
35247      ]
35248    }
35249  }
35250}