blob: fed2e68241fb4e643cd7426495ce65982fce99d7 [file] [log] [blame]
Will Osborn01c46f32020-04-21 09:13:26 +01001{
2 "version info": {
3 "schema version": 2,
4 "api version": "1.1.121",
5 "comment": "from git branch: github-master commit: 59750fe4c72a9295a94e22474060d3a1635e92c8",
6 "date": "2019-08-25 10:57:34Z"
7 },
8 "validation": {
9 "vkGetInstanceProcAddr": {
10 "core": [
11 {
12 "vuid": "VUID-vkGetInstanceProcAddr-instance-parameter",
13 "text": " If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
14 },
15 {
16 "vuid": "VUID-vkGetInstanceProcAddr-pName-parameter",
17 "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
18 }
19 ]
20 },
21 "vkGetDeviceProcAddr": {
22 "core": [
23 {
24 "vuid": "VUID-vkGetDeviceProcAddr-device-parameter",
25 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
26 },
27 {
28 "vuid": "VUID-vkGetDeviceProcAddr-pName-parameter",
29 "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
30 }
31 ]
32 },
33 "vkEnumerateInstanceVersion": {
34 "(VK_VERSION_1_1)": [
35 {
36 "vuid": "VUID-vkEnumerateInstanceVersion-pApiVersion-parameter",
37 "text": " <code>pApiVersion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
38 }
39 ]
40 },
41 "vkCreateInstance": {
42 "core": [
43 {
44 "vuid": "VUID-vkCreateInstance-ppEnabledExtensionNames-01388",
45 "text": " All <a href=\"#extendingvulkan-extensions-extensiondependencies\">required extensions</a> for each extension in the <a href=\"#VkInstanceCreateInfo\">VkInstanceCreateInfo</a>::<code>ppEnabledExtensionNames</code> list <strong class=\"purple\">must</strong> also be present in that list."
46 },
47 {
48 "vuid": "VUID-vkCreateInstance-pCreateInfo-parameter",
49 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkInstanceCreateInfo</code> structure"
50 },
51 {
52 "vuid": "VUID-vkCreateInstance-pAllocator-parameter",
53 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
54 },
55 {
56 "vuid": "VUID-vkCreateInstance-pInstance-parameter",
57 "text": " <code>pInstance</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkInstance</code> handle"
58 }
59 ]
60 },
61 "VkInstanceCreateInfo": {
62 "core": [
63 {
64 "vuid": "VUID-VkInstanceCreateInfo-sType-sType",
65 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO</code>"
66 },
67 {
68 "vuid": "VUID-VkInstanceCreateInfo-pNext-pNext",
69 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDebugReportCallbackCreateInfoEXT\">VkDebugReportCallbackCreateInfoEXT</a>, <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a>, <a href=\"#VkValidationFeaturesEXT\">VkValidationFeaturesEXT</a>, or <a href=\"#VkValidationFlagsEXT\">VkValidationFlagsEXT</a>"
70 },
71 {
72 "vuid": "VUID-VkInstanceCreateInfo-sType-unique",
73 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
74 },
75 {
76 "vuid": "VUID-VkInstanceCreateInfo-flags-zerobitmask",
77 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
78 },
79 {
80 "vuid": "VUID-VkInstanceCreateInfo-pApplicationInfo-parameter",
81 "text": " If <code>pApplicationInfo</code> is not <code>NULL</code>, <code>pApplicationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkApplicationInfo</code> structure"
82 },
83 {
84 "vuid": "VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter",
85 "text": " If <code>enabledLayerCount</code> is not <code>0</code>, <code>ppEnabledLayerNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledLayerCount</code> null-terminated UTF-8 strings"
86 },
87 {
88 "vuid": "VUID-VkInstanceCreateInfo-ppEnabledExtensionNames-parameter",
89 "text": " If <code>enabledExtensionCount</code> is not <code>0</code>, <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledExtensionCount</code> null-terminated UTF-8 strings"
90 }
91 ]
92 },
93 "VkValidationFlagsEXT": {
94 "(VK_EXT_validation_flags)": [
95 {
96 "vuid": "VUID-VkValidationFlagsEXT-sType-sType",
97 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT</code>"
98 },
99 {
100 "vuid": "VUID-VkValidationFlagsEXT-pDisabledValidationChecks-parameter",
101 "text": " <code>pDisabledValidationChecks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>disabledValidationCheckCount</code> valid <a href=\"#VkValidationCheckEXT\">VkValidationCheckEXT</a> values"
102 },
103 {
104 "vuid": "VUID-VkValidationFlagsEXT-disabledValidationCheckCount-arraylength",
105 "text": " <code>disabledValidationCheckCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
106 }
107 ]
108 },
109 "VkValidationFeaturesEXT": {
110 "(VK_EXT_validation_features)": [
111 {
112 "vuid": "VUID-VkValidationFeaturesEXT-sType-sType",
113 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT</code>"
114 },
115 {
116 "vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-parameter",
117 "text": " If <code>enabledValidationFeatureCount</code> is not <code>0</code>, <code>pEnabledValidationFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledValidationFeatureCount</code> valid <a href=\"#VkValidationFeatureEnableEXT\">VkValidationFeatureEnableEXT</a> values"
118 },
119 {
120 "vuid": "VUID-VkValidationFeaturesEXT-pDisabledValidationFeatures-parameter",
121 "text": " If <code>disabledValidationFeatureCount</code> is not <code>0</code>, <code>pDisabledValidationFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>disabledValidationFeatureCount</code> valid <a href=\"#VkValidationFeatureDisableEXT\">VkValidationFeatureDisableEXT</a> values"
122 }
123 ]
124 },
125 "VkApplicationInfo": {
126 "core": [
127 {
128 "vuid": "VUID-VkApplicationInfo-sType-sType",
129 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_APPLICATION_INFO</code>"
130 },
131 {
132 "vuid": "VUID-VkApplicationInfo-pNext-pNext",
133 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
134 },
135 {
136 "vuid": "VUID-VkApplicationInfo-pApplicationName-parameter",
137 "text": " If <code>pApplicationName</code> is not <code>NULL</code>, <code>pApplicationName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
138 },
139 {
140 "vuid": "VUID-VkApplicationInfo-pEngineName-parameter",
141 "text": " If <code>pEngineName</code> is not <code>NULL</code>, <code>pEngineName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
142 }
143 ]
144 },
145 "vkDestroyInstance": {
146 "core": [
147 {
148 "vuid": "VUID-vkDestroyInstance-instance-00629",
149 "text": " All child objects created using <code>instance</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>instance</code>"
150 },
151 {
152 "vuid": "VUID-vkDestroyInstance-instance-00630",
153 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
154 },
155 {
156 "vuid": "VUID-vkDestroyInstance-instance-00631",
157 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
158 },
159 {
160 "vuid": "VUID-vkDestroyInstance-instance-parameter",
161 "text": " If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
162 },
163 {
164 "vuid": "VUID-vkDestroyInstance-pAllocator-parameter",
165 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
166 }
167 ]
168 },
169 "vkEnumeratePhysicalDevices": {
170 "core": [
171 {
172 "vuid": "VUID-vkEnumeratePhysicalDevices-instance-parameter",
173 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
174 },
175 {
176 "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDeviceCount-parameter",
177 "text": " <code>pPhysicalDeviceCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
178 },
179 {
180 "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDevices-parameter",
181 "text": " If the value referenced by <code>pPhysicalDeviceCount</code> is not <code>0</code>, and <code>pPhysicalDevices</code> is not <code>NULL</code>, <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPhysicalDeviceCount</code> <code>VkPhysicalDevice</code> handles"
182 }
183 ]
184 },
185 "vkGetPhysicalDeviceProperties": {
186 "core": [
187 {
188 "vuid": "VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter",
189 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
190 },
191 {
192 "vuid": "VUID-vkGetPhysicalDeviceProperties-pProperties-parameter",
193 "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceProperties</code> structure"
194 }
195 ]
196 },
197 "vkGetPhysicalDeviceProperties2": {
198 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
199 {
200 "vuid": "VUID-vkGetPhysicalDeviceProperties2-physicalDevice-parameter",
201 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
202 },
203 {
204 "vuid": "VUID-vkGetPhysicalDeviceProperties2-pProperties-parameter",
205 "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceProperties2</code> structure"
206 }
207 ]
208 },
209 "VkPhysicalDeviceProperties2": {
210 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
211 {
212 "vuid": "VUID-VkPhysicalDeviceProperties2-sType-sType",
213 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2</code>"
214 },
215 {
216 "vuid": "VUID-VkPhysicalDeviceProperties2-pNext-pNext",
217 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceConservativeRasterizationPropertiesEXT\">VkPhysicalDeviceConservativeRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesNV\">VkPhysicalDeviceCooperativeMatrixPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingPropertiesEXT\">VkPhysicalDeviceDescriptorIndexingPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDriverPropertiesKHR\">VkPhysicalDeviceDriverPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFloatControlsPropertiesKHR\">VkPhysicalDeviceFloatControlsPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapPropertiesEXT\">VkPhysicalDeviceFragmentDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockPropertiesEXT\">VkPhysicalDeviceInlineUniformBlockPropertiesEXT</a>, <a href=\"#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=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT\">VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT</a>, <a href=\"#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=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>, or <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>"
218 },
219 {
220 "vuid": "VUID-VkPhysicalDeviceProperties2-sType-unique",
221 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
222 }
223 ]
224 },
225 "VkPhysicalDeviceIDProperties": {
226 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilities,VK_KHR_external_fence_capabilities)": [
227 {
228 "vuid": "VUID-VkPhysicalDeviceIDProperties-sType-sType",
229 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES</code>"
230 }
231 ]
232 },
233 "VkPhysicalDeviceDriverPropertiesKHR": {
234 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_KHR_driver_properties)": [
235 {
236 "vuid": "VUID-VkPhysicalDeviceDriverPropertiesKHR-sType-sType",
237 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR</code>"
238 }
239 ]
240 },
241 "VkPhysicalDevicePCIBusInfoPropertiesEXT": {
242 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_pci_bus_info)": [
243 {
244 "vuid": "VUID-VkPhysicalDevicePCIBusInfoPropertiesEXT-sType-sType",
245 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT</code>"
246 }
247 ]
248 },
249 "vkGetPhysicalDeviceQueueFamilyProperties": {
250 "core": [
251 {
252 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter",
253 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
254 },
255 {
256 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyPropertyCount-parameter",
257 "text": " <code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
258 },
259 {
260 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyProperties-parameter",
261 "text": " If the value referenced by <code>pQueueFamilyPropertyCount</code> is not <code>0</code>, and <code>pQueueFamilyProperties</code> is not <code>NULL</code>, <code>pQueueFamilyProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pQueueFamilyPropertyCount</code> <code>VkQueueFamilyProperties</code> structures"
262 }
263 ]
264 },
265 "vkGetPhysicalDeviceQueueFamilyProperties2": {
266 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
267 {
268 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter",
269 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
270 },
271 {
272 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyPropertyCount-parameter",
273 "text": " <code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
274 },
275 {
276 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyProperties-parameter",
277 "text": " If the value referenced by <code>pQueueFamilyPropertyCount</code> is not <code>0</code>, and <code>pQueueFamilyProperties</code> is not <code>NULL</code>, <code>pQueueFamilyProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pQueueFamilyPropertyCount</code> <code>VkQueueFamilyProperties2</code> structures"
278 }
279 ]
280 },
281 "VkQueueFamilyProperties2": {
282 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
283 {
284 "vuid": "VUID-VkQueueFamilyProperties2-sType-sType",
285 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2</code>"
286 },
287 {
288 "vuid": "VUID-VkQueueFamilyProperties2-pNext-pNext",
289 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkQueueFamilyCheckpointPropertiesNV\">VkQueueFamilyCheckpointPropertiesNV</a>"
290 }
291 ]
292 },
293 "VkQueueFamilyCheckpointPropertiesNV": {
294 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_NV_device_diagnostic_checkpoints)": [
295 {
296 "vuid": "VUID-VkQueueFamilyCheckpointPropertiesNV-sType-sType",
297 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV</code>"
298 }
299 ]
300 },
301 "vkEnumeratePhysicalDeviceGroups": {
302 "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
303 {
304 "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-instance-parameter",
305 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
306 },
307 {
308 "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupCount-parameter",
309 "text": " <code>pPhysicalDeviceGroupCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
310 },
311 {
312 "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupProperties-parameter",
313 "text": " If the value referenced by <code>pPhysicalDeviceGroupCount</code> is not <code>0</code>, and <code>pPhysicalDeviceGroupProperties</code> is not <code>NULL</code>, <code>pPhysicalDeviceGroupProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPhysicalDeviceGroupCount</code> <code>VkPhysicalDeviceGroupProperties</code> structures"
314 }
315 ]
316 },
317 "VkPhysicalDeviceGroupProperties": {
318 "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
319 {
320 "vuid": "VUID-VkPhysicalDeviceGroupProperties-sType-sType",
321 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES</code>"
322 },
323 {
324 "vuid": "VUID-VkPhysicalDeviceGroupProperties-pNext-pNext",
325 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
326 }
327 ]
328 },
329 "vkCreateDevice": {
330 "core": [
331 {
332 "vuid": "VUID-vkCreateDevice-ppEnabledExtensionNames-01387",
333 "text": " All <a href=\"#extendingvulkan-extensions-extensiondependencies\">required extensions</a> for each extension in the <a href=\"#VkDeviceCreateInfo\">VkDeviceCreateInfo</a>::<code>ppEnabledExtensionNames</code> list <strong class=\"purple\">must</strong> also be present in that list."
334 },
335 {
336 "vuid": "VUID-vkCreateDevice-physicalDevice-parameter",
337 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
338 },
339 {
340 "vuid": "VUID-vkCreateDevice-pCreateInfo-parameter",
341 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceCreateInfo</code> structure"
342 },
343 {
344 "vuid": "VUID-vkCreateDevice-pAllocator-parameter",
345 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
346 },
347 {
348 "vuid": "VUID-vkCreateDevice-pDevice-parameter",
349 "text": " <code>pDevice</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDevice</code> handle"
350 }
351 ]
352 },
353 "VkDeviceCreateInfo": {
354 "core": [
355 {
356 "vuid": "VUID-VkDeviceCreateInfo-queueFamilyIndex-00372",
357 "text": ""
358 },
359 {
360 "vuid": "VUID-VkDeviceCreateInfo-sType-sType",
361 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO</code>"
362 },
363 {
364 "vuid": "VUID-VkDeviceCreateInfo-pNext-pNext",
365 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice8BitStorageFeaturesKHR\">VkPhysicalDevice8BitStorageFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#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=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeaturesEXT\">VkPhysicalDeviceHostQueryResetFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeaturesKHR\">VkPhysicalDeviceImagelessFramebufferFeaturesKHR</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=\"#VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR\">VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeaturesEXT\">VkPhysicalDeviceScalarBlockLayoutFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64FeaturesKHR\">VkPhysicalDeviceShaderAtomicInt64FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT\">VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8FeaturesKHR\">VkPhysicalDeviceShaderFloat16Int8FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL\">VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\">VkPhysicalDeviceShaderSMBuiltinsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlFeaturesEXT\">VkPhysicalDeviceSubgroupSizeControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT\">VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT\">VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR\">VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeaturesKHR\">VkPhysicalDeviceVulkanMemoryModelFeaturesKHR</a>, or <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>"
366 },
367 {
368 "vuid": "VUID-VkDeviceCreateInfo-sType-unique",
369 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
370 },
371 {
372 "vuid": "VUID-VkDeviceCreateInfo-flags-zerobitmask",
373 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
374 },
375 {
376 "vuid": "VUID-VkDeviceCreateInfo-pQueueCreateInfos-parameter",
377 "text": " <code>pQueueCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCreateInfoCount</code> valid <code>VkDeviceQueueCreateInfo</code> structures"
378 },
379 {
380 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledLayerNames-parameter",
381 "text": " If <code>enabledLayerCount</code> is not <code>0</code>, <code>ppEnabledLayerNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledLayerCount</code> null-terminated UTF-8 strings"
382 },
383 {
384 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-parameter",
385 "text": " If <code>enabledExtensionCount</code> is not <code>0</code>, <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledExtensionCount</code> null-terminated UTF-8 strings"
386 },
387 {
388 "vuid": "VUID-VkDeviceCreateInfo-pEnabledFeatures-parameter",
389 "text": " If <code>pEnabledFeatures</code> is not <code>NULL</code>, <code>pEnabledFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceFeatures</code> structure"
390 },
391 {
392 "vuid": "VUID-VkDeviceCreateInfo-queueCreateInfoCount-arraylength",
393 "text": " <code>queueCreateInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
394 }
395 ],
396 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
397 {
398 "vuid": "VUID-VkDeviceCreateInfo-pNext-00373",
399 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a> structure, then <code>pEnabledFeatures</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
400 }
401 ],
402 "(VK_AMD_negative_viewport_height)+(VK_VERSION_1_1)": [
403 {
404 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-01840",
405 "text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain <code><a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a></code>"
406 }
407 ],
408 "(VK_AMD_negative_viewport_height)+!(VK_VERSION_1_1)+(VK_KHR_maintenance1)": [
409 {
410 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-00374",
411 "text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain both <code><a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a></code> and <code><a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a></code>"
412 }
413 ]
414 },
415 "VkDeviceGroupDeviceCreateInfo": {
416 "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
417 {
418 "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00375",
419 "text": " Each element of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be unique"
420 },
421 {
422 "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00376",
423 "text": " All elements of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be in the same device group as enumerated by <a href=\"#vkEnumeratePhysicalDeviceGroups\">vkEnumeratePhysicalDeviceGroups</a>"
424 },
425 {
426 "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-physicalDeviceCount-00377",
427 "text": " If <code>physicalDeviceCount</code> is not <code>0</code>, the <code>physicalDevice</code> parameter of <a href=\"#vkCreateDevice\">vkCreateDevice</a> <strong class=\"purple\">must</strong> be an element of <code>pPhysicalDevices</code>."
428 },
429 {
430 "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-sType-sType",
431 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO</code>"
432 },
433 {
434 "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-parameter",
435 "text": " If <code>physicalDeviceCount</code> is not <code>0</code>, <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>physicalDeviceCount</code> valid <code>VkPhysicalDevice</code> handles"
436 }
437 ]
438 },
439 "VkDeviceMemoryOverallocationCreateInfoAMD": {
440 "(VK_AMD_memory_overallocation_behavior)": [
441 {
442 "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-sType-sType",
443 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD</code>"
444 },
445 {
446 "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-overallocationBehavior-parameter",
447 "text": " <code>overallocationBehavior</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMemoryOverallocationBehaviorAMD\">VkMemoryOverallocationBehaviorAMD</a> value"
448 }
449 ]
450 },
451 "vkDestroyDevice": {
452 "core": [
453 {
454 "vuid": "VUID-vkDestroyDevice-device-00378",
455 "text": " All child objects created on <code>device</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>device</code>"
456 },
457 {
458 "vuid": "VUID-vkDestroyDevice-device-00379",
459 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>device</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
460 },
461 {
462 "vuid": "VUID-vkDestroyDevice-device-00380",
463 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>device</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
464 },
465 {
466 "vuid": "VUID-vkDestroyDevice-device-parameter",
467 "text": " If <code>device</code> is not <code>NULL</code>, <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
468 },
469 {
470 "vuid": "VUID-vkDestroyDevice-pAllocator-parameter",
471 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
472 }
473 ]
474 },
475 "VkDeviceQueueCreateInfo": {
476 "core": [
477 {
478 "vuid": "VUID-VkDeviceQueueCreateInfo-queueFamilyIndex-00381",
479 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code>"
480 },
481 {
482 "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-00382",
483 "text": " <code>queueCount</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>queueCount</code> member of the <code>VkQueueFamilyProperties</code> structure, as returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> in the <code>pQueueFamilyProperties</code>[<code>queueFamilyIndex</code>]"
484 },
485 {
486 "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-00383",
487 "text": " Each element of <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code> inclusive"
488 },
489 {
490 "vuid": "VUID-VkDeviceQueueCreateInfo-sType-sType",
491 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO</code>"
492 },
493 {
494 "vuid": "VUID-VkDeviceQueueCreateInfo-pNext-pNext",
495 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceQueueGlobalPriorityCreateInfoEXT\">VkDeviceQueueGlobalPriorityCreateInfoEXT</a>"
496 },
497 {
498 "vuid": "VUID-VkDeviceQueueCreateInfo-flags-parameter",
499 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values"
500 },
501 {
502 "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter",
503 "text": " <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCount</code> <code>float</code> values"
504 },
505 {
506 "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-arraylength",
507 "text": " <code>queueCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
508 }
509 ]
510 },
511 "VkDeviceQueueGlobalPriorityCreateInfoEXT": {
512 "(VK_EXT_global_priority)": [
513 {
514 "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-sType-sType",
515 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT</code>"
516 },
517 {
518 "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-globalPriority-parameter",
519 "text": " <code>globalPriority</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueueGlobalPriorityEXT\">VkQueueGlobalPriorityEXT</a> value"
520 }
521 ]
522 },
523 "vkGetDeviceQueue": {
524 "core": [
525 {
526 "vuid": "VUID-vkGetDeviceQueue-queueFamilyIndex-00384",
527 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be one of the queue family indices specified when <code>device</code> was created, via the <code>VkDeviceQueueCreateInfo</code> structure"
528 },
529 {
530 "vuid": "VUID-vkGetDeviceQueue-queueIndex-00385",
531 "text": " <code>queueIndex</code> <strong class=\"purple\">must</strong> be less than the number of queues created for the specified queue family index when <code>device</code> was created, via the <code>queueCount</code> member of the <code>VkDeviceQueueCreateInfo</code> structure"
532 },
533 {
534 "vuid": "VUID-vkGetDeviceQueue-flags-01841",
535 "text": " <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a>::<code>flags</code> <strong class=\"purple\">must</strong> have been set to zero when <code>device</code> was created"
536 },
537 {
538 "vuid": "VUID-vkGetDeviceQueue-device-parameter",
539 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
540 },
541 {
542 "vuid": "VUID-vkGetDeviceQueue-pQueue-parameter",
543 "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueue</code> handle"
544 }
545 ]
546 },
547 "vkGetDeviceQueue2": {
548 "(VK_VERSION_1_1)": [
549 {
550 "vuid": "VUID-vkGetDeviceQueue2-device-parameter",
551 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
552 },
553 {
554 "vuid": "VUID-vkGetDeviceQueue2-pQueueInfo-parameter",
555 "text": " <code>pQueueInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceQueueInfo2</code> structure"
556 },
557 {
558 "vuid": "VUID-vkGetDeviceQueue2-pQueue-parameter",
559 "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueue</code> handle"
560 }
561 ]
562 },
563 "VkDeviceQueueInfo2": {
564 "(VK_VERSION_1_1)": [
565 {
566 "vuid": "VUID-VkDeviceQueueInfo2-queueFamilyIndex-01842",
567 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be one of the queue family indices specified when <code>device</code> was created, via the <code>VkDeviceQueueCreateInfo</code> structure"
568 },
569 {
570 "vuid": "VUID-VkDeviceQueueInfo2-queueIndex-01843",
571 "text": " <code>queueIndex</code> <strong class=\"purple\">must</strong> be less than the number of queues created for the specified queue family index and <a href=\"#VkDeviceQueueCreateFlags\">VkDeviceQueueCreateFlags</a> member <code>flags</code> equal to this <code>flags</code> value when <code>device</code> was created, via the <code>queueCount</code> member of the <code>VkDeviceQueueCreateInfo</code> structure"
572 },
573 {
574 "vuid": "VUID-VkDeviceQueueInfo2-sType-sType",
575 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2</code>"
576 },
577 {
578 "vuid": "VUID-VkDeviceQueueInfo2-pNext-pNext",
579 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
580 },
581 {
582 "vuid": "VUID-VkDeviceQueueInfo2-flags-parameter",
583 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values"
584 },
585 {
586 "vuid": "VUID-VkDeviceQueueInfo2-flags-requiredbitmask",
587 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
588 }
589 ]
590 },
591 "vkCreateCommandPool": {
592 "core": [
593 {
594 "vuid": "VUID-vkCreateCommandPool-queueFamilyIndex-01937",
595 "text": " <code>pCreateInfo</code>::<code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be the index of a queue family available in the logical device <code>device</code>."
596 },
597 {
598 "vuid": "VUID-vkCreateCommandPool-device-parameter",
599 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
600 },
601 {
602 "vuid": "VUID-vkCreateCommandPool-pCreateInfo-parameter",
603 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandPoolCreateInfo</code> structure"
604 },
605 {
606 "vuid": "VUID-vkCreateCommandPool-pAllocator-parameter",
607 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
608 },
609 {
610 "vuid": "VUID-vkCreateCommandPool-pCommandPool-parameter",
611 "text": " <code>pCommandPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkCommandPool</code> handle"
612 }
613 ]
614 },
615 "VkCommandPoolCreateInfo": {
616 "core": [
617 {
618 "vuid": "VUID-VkCommandPoolCreateInfo-sType-sType",
619 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO</code>"
620 },
621 {
622 "vuid": "VUID-VkCommandPoolCreateInfo-pNext-pNext",
623 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
624 },
625 {
626 "vuid": "VUID-VkCommandPoolCreateInfo-flags-parameter",
627 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolCreateFlagBits\">VkCommandPoolCreateFlagBits</a> values"
628 }
629 ]
630 },
631 "vkTrimCommandPool": {
632 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
633 {
634 "vuid": "VUID-vkTrimCommandPool-device-parameter",
635 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
636 },
637 {
638 "vuid": "VUID-vkTrimCommandPool-commandPool-parameter",
639 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
640 },
641 {
642 "vuid": "VUID-vkTrimCommandPool-flags-zerobitmask",
643 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
644 },
645 {
646 "vuid": "VUID-vkTrimCommandPool-commandPool-parent",
647 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
648 }
649 ]
650 },
651 "vkResetCommandPool": {
652 "core": [
653 {
654 "vuid": "VUID-vkResetCommandPool-commandPool-00040",
655 "text": " All <code>VkCommandBuffer</code> objects allocated from <code>commandPool</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
656 },
657 {
658 "vuid": "VUID-vkResetCommandPool-device-parameter",
659 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
660 },
661 {
662 "vuid": "VUID-vkResetCommandPool-commandPool-parameter",
663 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
664 },
665 {
666 "vuid": "VUID-vkResetCommandPool-flags-parameter",
667 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolResetFlagBits\">VkCommandPoolResetFlagBits</a> values"
668 },
669 {
670 "vuid": "VUID-vkResetCommandPool-commandPool-parent",
671 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
672 }
673 ]
674 },
675 "vkDestroyCommandPool": {
676 "core": [
677 {
678 "vuid": "VUID-vkDestroyCommandPool-commandPool-00041",
679 "text": " All <code>VkCommandBuffer</code> objects allocated from <code>commandPool</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>."
680 },
681 {
682 "vuid": "VUID-vkDestroyCommandPool-commandPool-00042",
683 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>commandPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
684 },
685 {
686 "vuid": "VUID-vkDestroyCommandPool-commandPool-00043",
687 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>commandPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
688 },
689 {
690 "vuid": "VUID-vkDestroyCommandPool-device-parameter",
691 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
692 },
693 {
694 "vuid": "VUID-vkDestroyCommandPool-commandPool-parameter",
695 "text": " If <code>commandPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
696 },
697 {
698 "vuid": "VUID-vkDestroyCommandPool-pAllocator-parameter",
699 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
700 },
701 {
702 "vuid": "VUID-vkDestroyCommandPool-commandPool-parent",
703 "text": " If <code>commandPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
704 }
705 ]
706 },
707 "vkAllocateCommandBuffers": {
708 "core": [
709 {
710 "vuid": "VUID-vkAllocateCommandBuffers-device-parameter",
711 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
712 },
713 {
714 "vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo-parameter",
715 "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandBufferAllocateInfo</code> structure"
716 },
717 {
718 "vuid": "VUID-vkAllocateCommandBuffers-pCommandBuffers-parameter",
719 "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo</code>::commandBufferCount <code>VkCommandBuffer</code> handles"
720 },
721 {
722 "vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo::commandBufferCount-arraylength",
723 "text": " The value referenced by <code>pAllocateInfo</code>::<code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
724 }
725 ]
726 },
727 "VkCommandBufferAllocateInfo": {
728 "core": [
729 {
730 "vuid": "VUID-VkCommandBufferAllocateInfo-commandBufferCount-00044",
731 "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
732 },
733 {
734 "vuid": "VUID-VkCommandBufferAllocateInfo-sType-sType",
735 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO</code>"
736 },
737 {
738 "vuid": "VUID-VkCommandBufferAllocateInfo-pNext-pNext",
739 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
740 },
741 {
742 "vuid": "VUID-VkCommandBufferAllocateInfo-commandPool-parameter",
743 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
744 },
745 {
746 "vuid": "VUID-VkCommandBufferAllocateInfo-level-parameter",
747 "text": " <code>level</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBufferLevel\">VkCommandBufferLevel</a> value"
748 }
749 ]
750 },
751 "vkResetCommandBuffer": {
752 "core": [
753 {
754 "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00045",
755 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
756 },
757 {
758 "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00046",
759 "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>"
760 },
761 {
762 "vuid": "VUID-vkResetCommandBuffer-commandBuffer-parameter",
763 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
764 },
765 {
766 "vuid": "VUID-vkResetCommandBuffer-flags-parameter",
767 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferResetFlagBits\">VkCommandBufferResetFlagBits</a> values"
768 }
769 ]
770 },
771 "vkFreeCommandBuffers": {
772 "core": [
773 {
774 "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00047",
775 "text": " All elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
776 },
777 {
778 "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00048",
779 "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>"
780 },
781 {
782 "vuid": "VUID-vkFreeCommandBuffers-device-parameter",
783 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
784 },
785 {
786 "vuid": "VUID-vkFreeCommandBuffers-commandPool-parameter",
787 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
788 },
789 {
790 "vuid": "VUID-vkFreeCommandBuffers-commandBufferCount-arraylength",
791 "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
792 },
793 {
794 "vuid": "VUID-vkFreeCommandBuffers-commandPool-parent",
795 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
796 },
797 {
798 "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-parent",
799 "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>"
800 }
801 ]
802 },
803 "vkBeginCommandBuffer": {
804 "core": [
805 {
806 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00049",
807 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">recording or pending state</a>."
808 },
809 {
810 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00050",
811 "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>."
812 },
813 {
814 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00051",
815 "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"
816 },
817 {
818 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00052",
819 "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>"
820 },
821 {
822 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-parameter",
823 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
824 },
825 {
826 "vuid": "VUID-vkBeginCommandBuffer-pBeginInfo-parameter",
827 "text": " <code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandBufferBeginInfo</code> structure"
828 }
829 ]
830 },
831 "VkCommandBufferBeginInfo": {
832 "core": [
833 {
834 "vuid": "VUID-VkCommandBufferBeginInfo-flags-00053",
835 "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>"
836 },
837 {
838 "vuid": "VUID-VkCommandBufferBeginInfo-flags-00054",
839 "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>"
840 },
841 {
842 "vuid": "VUID-VkCommandBufferBeginInfo-flags-00055",
843 "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>"
844 },
845 {
846 "vuid": "VUID-VkCommandBufferBeginInfo-sType-sType",
847 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO</code>"
848 },
849 {
850 "vuid": "VUID-VkCommandBufferBeginInfo-pNext-pNext",
851 "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>"
852 },
853 {
854 "vuid": "VUID-VkCommandBufferBeginInfo-flags-parameter",
855 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferUsageFlagBits\">VkCommandBufferUsageFlagBits</a> values"
856 }
857 ]
858 },
859 "VkCommandBufferInheritanceInfo": {
860 "core": [
861 {
862 "vuid": "VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056",
863 "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>"
864 },
865 {
866 "vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-00057",
867 "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"
868 },
869 {
870 "vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-02788",
871 "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>"
872 },
873 {
874 "vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-02789",
875 "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"
876 },
877 {
878 "vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058",
879 "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>"
880 },
881 {
882 "vuid": "VUID-VkCommandBufferInheritanceInfo-sType-sType",
883 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO</code>"
884 },
885 {
886 "vuid": "VUID-VkCommandBufferInheritanceInfo-pNext-pNext",
887 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkCommandBufferInheritanceConditionalRenderingInfoEXT\">VkCommandBufferInheritanceConditionalRenderingInfoEXT</a>"
888 },
889 {
890 "vuid": "VUID-VkCommandBufferInheritanceInfo-commonparent",
891 "text": " Both of <code>framebuffer</code>, and <code>renderPass</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
892 }
893 ]
894 },
895 "VkCommandBufferInheritanceConditionalRenderingInfoEXT": {
896 "(VK_EXT_conditional_rendering)": [
897 {
898 "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977",
899 "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>"
900 },
901 {
902 "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-sType-sType",
903 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT</code>"
904 }
905 ]
906 },
907 "vkEndCommandBuffer": {
908 "core": [
909 {
910 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00059",
911 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>."
912 },
913 {
914 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00060",
915 "text": " If <code>commandBuffer</code> is a primary command buffer, there <strong class=\"purple\">must</strong> not be an active render pass instance"
916 },
917 {
918 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00061",
919 "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"
920 },
921 {
922 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-parameter",
923 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
924 }
925 ],
926 "(VK_EXT_conditional_rendering)": [
927 {
928 "vuid": "VUID-vkEndCommandBuffer-None-01978",
929 "text": " Conditional rendering must not be <a href=\"#active-conditional-rendering\">active</a>"
930 }
931 ],
932 "(VK_EXT_debug_utils)": [
933 {
934 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-01815",
935 "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>."
936 }
937 ],
938 "(VK_EXT_debug_marker)": [
939 {
940 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00062",
941 "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>."
942 }
943 ]
944 },
945 "vkQueueSubmit": {
946 "core": [
947 {
948 "vuid": "VUID-vkQueueSubmit-fence-00063",
949 "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"
950 },
951 {
952 "vuid": "VUID-vkQueueSubmit-fence-00064",
953 "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"
954 },
955 {
956 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00065",
957 "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>."
958 },
959 {
960 "vuid": "VUID-vkQueueSubmit-pWaitDstStageMask-00066",
961 "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>."
962 },
963 {
964 "vuid": "VUID-vkQueueSubmit-pSignalSemaphores-00067",
965 "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"
966 },
967 {
968 "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00068",
969 "text": " When a semaphore unsignal operation defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pSubmits</code> executes on <code>queue</code>, there <strong class=\"purple\">must</strong> be no other queues waiting on the same semaphore."
970 },
971 {
972 "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00069",
973 "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."
974 },
975 {
976 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00070",
977 "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>."
978 },
979 {
980 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00071",
981 "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>."
982 },
983 {
984 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00072",
985 "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>."
986 },
987 {
988 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00073",
989 "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>."
990 },
991 {
992 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00074",
993 "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."
994 },
995 {
996 "vuid": "VUID-vkQueueSubmit-pSubmits-02207",
997 "text": " If any element of <code>pSubmits</code>-&gt;<code>pCommandBuffers</code> includes a <a href=\"#synchronization-queue-transfers-acquire\">Queue Family Transfer Acquire Operation</a>, there <strong class=\"purple\">must</strong> exist a previously submitted <a href=\"#synchronization-queue-transfers-release\">Queue Family Transfer Release Operation</a> on a queue in the queue family identified by the acquire operation, with parameters matching the acquire operation as defined in the definition of such <a href=\"#synchronization-queue-transfers-acquire\">acquire operations</a>, and which happens before the acquire operation."
998 },
999 {
1000 "vuid": "VUID-vkQueueSubmit-queue-parameter",
1001 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
1002 },
1003 {
1004 "vuid": "VUID-vkQueueSubmit-pSubmits-parameter",
1005 "text": " If <code>submitCount</code> is not <code>0</code>, <code>pSubmits</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>submitCount</code> valid <code>VkSubmitInfo</code> structures"
1006 },
1007 {
1008 "vuid": "VUID-vkQueueSubmit-fence-parameter",
1009 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
1010 },
1011 {
1012 "vuid": "VUID-vkQueueSubmit-commonparent",
1013 "text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
1014 }
1015 ]
1016 },
1017 "VkSubmitInfo": {
1018 "core": [
1019 {
1020 "vuid": "VUID-VkSubmitInfo-pCommandBuffers-00075",
1021 "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not have been allocated with <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>"
1022 },
1023 {
1024 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00076",
1025 "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>"
1026 },
1027 {
1028 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00077",
1029 "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>"
1030 },
1031 {
1032 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00078",
1033 "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>."
1034 },
1035 {
1036 "vuid": "VUID-VkSubmitInfo-sType-sType",
1037 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBMIT_INFO</code>"
1038 },
1039 {
1040 "vuid": "VUID-VkSubmitInfo-pNext-pNext",
1041 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkD3D12FenceSubmitInfoKHR\">VkD3D12FenceSubmitInfoKHR</a>, <a href=\"#VkDeviceGroupSubmitInfo\">VkDeviceGroupSubmitInfo</a>, <a href=\"#VkProtectedSubmitInfo\">VkProtectedSubmitInfo</a>, <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoKHR\">VkWin32KeyedMutexAcquireReleaseInfoKHR</a>, or <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoNV\">VkWin32KeyedMutexAcquireReleaseInfoNV</a>"
1042 },
1043 {
1044 "vuid": "VUID-VkSubmitInfo-sType-unique",
1045 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
1046 },
1047 {
1048 "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-parameter",
1049 "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
1050 },
1051 {
1052 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-parameter",
1053 "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"
1054 },
1055 {
1056 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-requiredbitmask",
1057 "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
1058 },
1059 {
1060 "vuid": "VUID-VkSubmitInfo-pCommandBuffers-parameter",
1061 "text": " If <code>commandBufferCount</code> is not <code>0</code>, <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> valid <code>VkCommandBuffer</code> handles"
1062 },
1063 {
1064 "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-parameter",
1065 "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
1066 },
1067 {
1068 "vuid": "VUID-VkSubmitInfo-commonparent",
1069 "text": " Each of the elements of <code>pCommandBuffers</code>, the elements of <code>pSignalSemaphores</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
1070 }
1071 ],
1072 "(VK_NV_mesh_shader)": [
1073 {
1074 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02089",
1075 "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>"
1076 },
1077 {
1078 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02090",
1079 "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>"
1080 }
1081 ]
1082 },
1083 "VkD3D12FenceSubmitInfoKHR": {
1084 "(VK_KHR_external_semaphore_win32)": [
1085 {
1086 "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-waitSemaphoreValuesCount-00079",
1087 "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."
1088 },
1089 {
1090 "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-signalSemaphoreValuesCount-00080",
1091 "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."
1092 },
1093 {
1094 "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-sType-sType",
1095 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR</code>"
1096 },
1097 {
1098 "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pWaitSemaphoreValues-parameter",
1099 "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"
1100 },
1101 {
1102 "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pSignalSemaphoreValues-parameter",
1103 "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"
1104 }
1105 ]
1106 },
1107 "VkWin32KeyedMutexAcquireReleaseInfoKHR": {
1108 "(VK_KHR_win32_keyed_mutex)": [
1109 {
1110 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-00081",
1111 "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>."
1112 },
1113 {
1114 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-sType-sType",
1115 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR</code>"
1116 },
1117 {
1118 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-parameter",
1119 "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <code>VkDeviceMemory</code> handles"
1120 },
1121 {
1122 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireKeys-parameter",
1123 "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"
1124 },
1125 {
1126 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireTimeouts-parameter",
1127 "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"
1128 },
1129 {
1130 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseSyncs-parameter",
1131 "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <code>VkDeviceMemory</code> handles"
1132 },
1133 {
1134 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseKeys-parameter",
1135 "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"
1136 },
1137 {
1138 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-commonparent",
1139 "text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
1140 }
1141 ]
1142 },
1143 "VkWin32KeyedMutexAcquireReleaseInfoNV": {
1144 "(VK_NV_win32_keyed_mutex)": [
1145 {
1146 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-sType-sType",
1147 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV</code>"
1148 },
1149 {
1150 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireSyncs-parameter",
1151 "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <code>VkDeviceMemory</code> handles"
1152 },
1153 {
1154 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireKeys-parameter",
1155 "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"
1156 },
1157 {
1158 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireTimeoutMilliseconds-parameter",
1159 "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"
1160 },
1161 {
1162 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseSyncs-parameter",
1163 "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <code>VkDeviceMemory</code> handles"
1164 },
1165 {
1166 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseKeys-parameter",
1167 "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"
1168 },
1169 {
1170 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-commonparent",
1171 "text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
1172 }
1173 ]
1174 },
1175 "VkProtectedSubmitInfo": {
1176 "(VK_VERSION_1_1)": [
1177 {
1178 "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01816",
1179 "text": " If the protected memory feature is not enabled, <code>protectedSubmit</code> <strong class=\"purple\">must</strong> not be <code>VK_TRUE</code>."
1180 },
1181 {
1182 "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01817",
1183 "text": " If <code>protectedSubmit</code> is <code>VK_TRUE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be a protected command buffer."
1184 },
1185 {
1186 "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01818",
1187 "text": " If <code>protectedSubmit</code> is <code>VK_FALSE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an unprotected command buffer."
1188 },
1189 {
1190 "vuid": "VUID-VkProtectedSubmitInfo-pNext-01819",
1191 "text": " If the <code>VkSubmitInfo</code>::<code>pNext</code> chain does not include a <code>VkProtectedSubmitInfo</code> structure, then each element of the command buffer of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an unprotected command buffer."
1192 },
1193 {
1194 "vuid": "VUID-VkProtectedSubmitInfo-sType-sType",
1195 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO</code>"
1196 }
1197 ]
1198 },
1199 "VkDeviceGroupSubmitInfo": {
1200 "(VK_VERSION_1_1,VK_KHR_device_group)": [
1201 {
1202 "vuid": "VUID-VkDeviceGroupSubmitInfo-waitSemaphoreCount-00082",
1203 "text": " <code>waitSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>waitSemaphoreCount</code>"
1204 },
1205 {
1206 "vuid": "VUID-VkDeviceGroupSubmitInfo-commandBufferCount-00083",
1207 "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>commandBufferCount</code>"
1208 },
1209 {
1210 "vuid": "VUID-VkDeviceGroupSubmitInfo-signalSemaphoreCount-00084",
1211 "text": " <code>signalSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>signalSemaphoreCount</code>"
1212 },
1213 {
1214 "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-00085",
1215 "text": " All elements of <code>pWaitSemaphoreDeviceIndices</code> and <code>pSignalSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
1216 },
1217 {
1218 "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-00086",
1219 "text": " All elements of <code>pCommandBufferDeviceMasks</code> <strong class=\"purple\">must</strong> be valid device masks"
1220 },
1221 {
1222 "vuid": "VUID-VkDeviceGroupSubmitInfo-sType-sType",
1223 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO</code>"
1224 },
1225 {
1226 "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-parameter",
1227 "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"
1228 },
1229 {
1230 "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-parameter",
1231 "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"
1232 },
1233 {
1234 "vuid": "VUID-VkDeviceGroupSubmitInfo-pSignalSemaphoreDeviceIndices-parameter",
1235 "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"
1236 }
1237 ]
1238 },
1239 "vkCmdExecuteCommands": {
1240 "core": [
1241 {
1242 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00087",
1243 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been allocated with a <code>level</code> of <code>VK_COMMAND_BUFFER_LEVEL_PRIMARY</code>"
1244 },
1245 {
1246 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00088",
1247 "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>"
1248 },
1249 {
1250 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00089",
1251 "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>."
1252 },
1253 {
1254 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00090",
1255 "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, and it was recorded into any other primary command buffer, that primary command buffer <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
1256 },
1257 {
1258 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00091",
1259 "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>."
1260 },
1261 {
1262 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00092",
1263 "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>."
1264 },
1265 {
1266 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00093",
1267 "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>."
1268 },
1269 {
1270 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00094",
1271 "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"
1272 },
1273 {
1274 "vuid": "VUID-vkCmdExecuteCommands-contents-00095",
1275 "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>"
1276 },
1277 {
1278 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00096",
1279 "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>"
1280 },
1281 {
1282 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00097",
1283 "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"
1284 },
1285 {
1286 "vuid": "VUID-vkCmdExecuteCommands-pInheritanceInfo-00098",
1287 "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, the render passes specified in the <code>pBeginInfo</code>::<code>pInheritanceInfo</code>::<code>renderPass</code> members of the <a href=\"#vkBeginCommandBuffer\">vkBeginCommandBuffer</a> commands used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the current render pass."
1288 },
1289 {
1290 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00099",
1291 "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, and any element of <code>pCommandBuffers</code> was recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>framebuffer</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, that <code>VkFramebuffer</code> <strong class=\"purple\">must</strong> match the <code>VkFramebuffer</code> used in the current render pass instance"
1292 },
1293 {
1294 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00100",
1295 "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>"
1296 },
1297 {
1298 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00101",
1299 "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>"
1300 },
1301 {
1302 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00102",
1303 "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>"
1304 },
1305 {
1306 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00103",
1307 "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"
1308 },
1309 {
1310 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00104",
1311 "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"
1312 },
1313 {
1314 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00105",
1315 "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>"
1316 },
1317 {
1318 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-parameter",
1319 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
1320 },
1321 {
1322 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-parameter",
1323 "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> valid <code>VkCommandBuffer</code> handles"
1324 },
1325 {
1326 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-recording",
1327 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
1328 },
1329 {
1330 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-cmdpool",
1331 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
1332 },
1333 {
1334 "vuid": "VUID-vkCmdExecuteCommands-bufferlevel",
1335 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
1336 },
1337 {
1338 "vuid": "VUID-vkCmdExecuteCommands-commandBufferCount-arraylength",
1339 "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
1340 },
1341 {
1342 "vuid": "VUID-vkCmdExecuteCommands-commonparent",
1343 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
1344 }
1345 ],
1346 "(VK_VERSION_1_1)": [
1347 {
1348 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01820",
1349 "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."
1350 },
1351 {
1352 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01821",
1353 "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."
1354 }
1355 ],
1356 "(VK_EXT_transform_feedback)": [
1357 {
1358 "vuid": "VUID-vkCmdExecuteCommands-None-02286",
1359 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
1360 }
1361 ]
1362 },
1363 "VkDeviceGroupCommandBufferBeginInfo": {
1364 "(VK_VERSION_1_1,VK_KHR_device_group)": [
1365 {
1366 "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00106",
1367 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
1368 },
1369 {
1370 "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00107",
1371 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
1372 },
1373 {
1374 "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-sType-sType",
1375 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO</code>"
1376 }
1377 ]
1378 },
1379 "vkCmdSetDeviceMask": {
1380 "(VK_VERSION_1_1,VK_KHR_device_group)": [
1381 {
1382 "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00108",
1383 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
1384 },
1385 {
1386 "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00109",
1387 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
1388 },
1389 {
1390 "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00110",
1391 "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."
1392 },
1393 {
1394 "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00111",
1395 "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."
1396 },
1397 {
1398 "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-parameter",
1399 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
1400 },
1401 {
1402 "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-recording",
1403 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
1404 },
1405 {
1406 "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-cmdpool",
1407 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
1408 }
1409 ]
1410 },
1411 "vkCreateFence": {
1412 "core": [
1413 {
1414 "vuid": "VUID-vkCreateFence-device-parameter",
1415 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1416 },
1417 {
1418 "vuid": "VUID-vkCreateFence-pCreateInfo-parameter",
1419 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceCreateInfo</code> structure"
1420 },
1421 {
1422 "vuid": "VUID-vkCreateFence-pAllocator-parameter",
1423 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
1424 },
1425 {
1426 "vuid": "VUID-vkCreateFence-pFence-parameter",
1427 "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle"
1428 }
1429 ]
1430 },
1431 "VkFenceCreateInfo": {
1432 "core": [
1433 {
1434 "vuid": "VUID-VkFenceCreateInfo-sType-sType",
1435 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_CREATE_INFO</code>"
1436 },
1437 {
1438 "vuid": "VUID-VkFenceCreateInfo-pNext-pNext",
1439 "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>"
1440 },
1441 {
1442 "vuid": "VUID-VkFenceCreateInfo-sType-unique",
1443 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
1444 },
1445 {
1446 "vuid": "VUID-VkFenceCreateInfo-flags-parameter",
1447 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceCreateFlagBits\">VkFenceCreateFlagBits</a> values"
1448 }
1449 ]
1450 },
1451 "VkExportFenceCreateInfo": {
1452 "(VK_VERSION_1_1,VK_KHR_external_fence)": [
1453 {
1454 "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-01446",
1455 "text": " The bits in <code>handleTypes</code> must be supported and compatible, as reported by <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>."
1456 },
1457 {
1458 "vuid": "VUID-VkExportFenceCreateInfo-sType-sType",
1459 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO</code>"
1460 },
1461 {
1462 "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-parameter",
1463 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> values"
1464 }
1465 ]
1466 },
1467 "VkExportFenceWin32HandleInfoKHR": {
1468 "(VK_KHR_external_fence_win32)": [
1469 {
1470 "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-handleTypes-01447",
1471 "text": " If <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VkExportFenceWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a>."
1472 },
1473 {
1474 "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-sType-sType",
1475 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>"
1476 },
1477 {
1478 "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-pAttributes-parameter",
1479 "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"
1480 }
1481 ]
1482 },
1483 "vkGetFenceWin32HandleKHR": {
1484 "(VK_KHR_external_fence_win32)": [
1485 {
1486 "vuid": "VUID-vkGetFenceWin32HandleKHR-device-parameter",
1487 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1488 },
1489 {
1490 "vuid": "VUID-vkGetFenceWin32HandleKHR-pGetWin32HandleInfo-parameter",
1491 "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceGetWin32HandleInfoKHR</code> structure"
1492 },
1493 {
1494 "vuid": "VUID-vkGetFenceWin32HandleKHR-pHandle-parameter",
1495 "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
1496 }
1497 ]
1498 },
1499 "VkFenceGetWin32HandleInfoKHR": {
1500 "(VK_KHR_external_fence_win32)": [
1501 {
1502 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01448",
1503 "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."
1504 },
1505 {
1506 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01449",
1507 "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>."
1508 },
1509 {
1510 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-01450",
1511 "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>."
1512 },
1513 {
1514 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01451",
1515 "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."
1516 },
1517 {
1518 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01452",
1519 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle."
1520 },
1521 {
1522 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-sType-sType",
1523 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR</code>"
1524 },
1525 {
1526 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-pNext-pNext",
1527 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1528 },
1529 {
1530 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-parameter",
1531 "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
1532 },
1533 {
1534 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter",
1535 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
1536 }
1537 ]
1538 },
1539 "vkGetFenceFdKHR": {
1540 "(VK_KHR_external_fence_fd)": [
1541 {
1542 "vuid": "VUID-vkGetFenceFdKHR-device-parameter",
1543 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1544 },
1545 {
1546 "vuid": "VUID-vkGetFenceFdKHR-pGetFdInfo-parameter",
1547 "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceGetFdInfoKHR</code> structure"
1548 },
1549 {
1550 "vuid": "VUID-vkGetFenceFdKHR-pFd-parameter",
1551 "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value"
1552 }
1553 ]
1554 },
1555 "VkFenceGetFdInfoKHR": {
1556 "(VK_KHR_external_fence_fd)": [
1557 {
1558 "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01453",
1559 "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."
1560 },
1561 {
1562 "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01454",
1563 "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."
1564 },
1565 {
1566 "vuid": "VUID-VkFenceGetFdInfoKHR-fence-01455",
1567 "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>."
1568 },
1569 {
1570 "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01456",
1571 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
1572 },
1573 {
1574 "vuid": "VUID-VkFenceGetFdInfoKHR-sType-sType",
1575 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR</code>"
1576 },
1577 {
1578 "vuid": "VUID-VkFenceGetFdInfoKHR-pNext-pNext",
1579 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1580 },
1581 {
1582 "vuid": "VUID-VkFenceGetFdInfoKHR-fence-parameter",
1583 "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
1584 },
1585 {
1586 "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-parameter",
1587 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
1588 }
1589 ]
1590 },
1591 "vkDestroyFence": {
1592 "core": [
1593 {
1594 "vuid": "VUID-vkDestroyFence-fence-01120",
1595 "text": " All <a href=\"#devsandqueues-submission\">queue submission</a> commands that refer to <code>fence</code> <strong class=\"purple\">must</strong> have completed execution"
1596 },
1597 {
1598 "vuid": "VUID-vkDestroyFence-fence-01121",
1599 "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"
1600 },
1601 {
1602 "vuid": "VUID-vkDestroyFence-fence-01122",
1603 "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>"
1604 },
1605 {
1606 "vuid": "VUID-vkDestroyFence-device-parameter",
1607 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1608 },
1609 {
1610 "vuid": "VUID-vkDestroyFence-fence-parameter",
1611 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
1612 },
1613 {
1614 "vuid": "VUID-vkDestroyFence-pAllocator-parameter",
1615 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
1616 },
1617 {
1618 "vuid": "VUID-vkDestroyFence-fence-parent",
1619 "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>"
1620 }
1621 ]
1622 },
1623 "vkGetFenceStatus": {
1624 "core": [
1625 {
1626 "vuid": "VUID-vkGetFenceStatus-device-parameter",
1627 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1628 },
1629 {
1630 "vuid": "VUID-vkGetFenceStatus-fence-parameter",
1631 "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
1632 },
1633 {
1634 "vuid": "VUID-vkGetFenceStatus-fence-parent",
1635 "text": " <code>fence</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
1636 }
1637 ]
1638 },
1639 "vkResetFences": {
1640 "core": [
1641 {
1642 "vuid": "VUID-vkResetFences-pFences-01123",
1643 "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"
1644 },
1645 {
1646 "vuid": "VUID-vkResetFences-device-parameter",
1647 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1648 },
1649 {
1650 "vuid": "VUID-vkResetFences-pFences-parameter",
1651 "text": " <code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <code>VkFence</code> handles"
1652 },
1653 {
1654 "vuid": "VUID-vkResetFences-fenceCount-arraylength",
1655 "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
1656 },
1657 {
1658 "vuid": "VUID-vkResetFences-pFences-parent",
1659 "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
1660 }
1661 ]
1662 },
1663 "vkWaitForFences": {
1664 "core": [
1665 {
1666 "vuid": "VUID-vkWaitForFences-device-parameter",
1667 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1668 },
1669 {
1670 "vuid": "VUID-vkWaitForFences-pFences-parameter",
1671 "text": " <code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <code>VkFence</code> handles"
1672 },
1673 {
1674 "vuid": "VUID-vkWaitForFences-fenceCount-arraylength",
1675 "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
1676 },
1677 {
1678 "vuid": "VUID-vkWaitForFences-pFences-parent",
1679 "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
1680 }
1681 ]
1682 },
1683 "vkRegisterDeviceEventEXT": {
1684 "(VK_EXT_display_control)": [
1685 {
1686 "vuid": "VUID-vkRegisterDeviceEventEXT-device-parameter",
1687 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1688 },
1689 {
1690 "vuid": "VUID-vkRegisterDeviceEventEXT-pDeviceEventInfo-parameter",
1691 "text": " <code>pDeviceEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceEventInfoEXT</code> structure"
1692 },
1693 {
1694 "vuid": "VUID-vkRegisterDeviceEventEXT-pAllocator-parameter",
1695 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
1696 },
1697 {
1698 "vuid": "VUID-vkRegisterDeviceEventEXT-pFence-parameter",
1699 "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle"
1700 }
1701 ]
1702 },
1703 "VkDeviceEventInfoEXT": {
1704 "(VK_EXT_display_control)": [
1705 {
1706 "vuid": "VUID-VkDeviceEventInfoEXT-sType-sType",
1707 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT</code>"
1708 },
1709 {
1710 "vuid": "VUID-VkDeviceEventInfoEXT-pNext-pNext",
1711 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1712 },
1713 {
1714 "vuid": "VUID-VkDeviceEventInfoEXT-deviceEvent-parameter",
1715 "text": " <code>deviceEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceEventTypeEXT\">VkDeviceEventTypeEXT</a> value"
1716 }
1717 ]
1718 },
1719 "vkRegisterDisplayEventEXT": {
1720 "(VK_EXT_display_control)": [
1721 {
1722 "vuid": "VUID-vkRegisterDisplayEventEXT-device-parameter",
1723 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1724 },
1725 {
1726 "vuid": "VUID-vkRegisterDisplayEventEXT-display-parameter",
1727 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
1728 },
1729 {
1730 "vuid": "VUID-vkRegisterDisplayEventEXT-pDisplayEventInfo-parameter",
1731 "text": " <code>pDisplayEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayEventInfoEXT</code> structure"
1732 },
1733 {
1734 "vuid": "VUID-vkRegisterDisplayEventEXT-pAllocator-parameter",
1735 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
1736 },
1737 {
1738 "vuid": "VUID-vkRegisterDisplayEventEXT-pFence-parameter",
1739 "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle"
1740 }
1741 ]
1742 },
1743 "VkDisplayEventInfoEXT": {
1744 "(VK_EXT_display_control)": [
1745 {
1746 "vuid": "VUID-VkDisplayEventInfoEXT-sType-sType",
1747 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT</code>"
1748 },
1749 {
1750 "vuid": "VUID-VkDisplayEventInfoEXT-pNext-pNext",
1751 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1752 },
1753 {
1754 "vuid": "VUID-VkDisplayEventInfoEXT-displayEvent-parameter",
1755 "text": " <code>displayEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayEventTypeEXT\">VkDisplayEventTypeEXT</a> value"
1756 }
1757 ]
1758 },
1759 "vkImportFenceWin32HandleKHR": {
1760 "(VK_KHR_external_fence_win32)": [
1761 {
1762 "vuid": "VUID-vkImportFenceWin32HandleKHR-device-parameter",
1763 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1764 },
1765 {
1766 "vuid": "VUID-vkImportFenceWin32HandleKHR-pImportFenceWin32HandleInfo-parameter",
1767 "text": " <code>pImportFenceWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportFenceWin32HandleInfoKHR</code> structure"
1768 }
1769 ]
1770 },
1771 "VkImportFenceWin32HandleInfoKHR": {
1772 "(VK_KHR_external_fence_win32)": [
1773 {
1774 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01457",
1775 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-fence-handletypes-win32\">Handle Types Supported by VkImportFenceWin32HandleInfoKHR</a> table."
1776 },
1777 {
1778 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459",
1779 "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>."
1780 },
1781 {
1782 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01460",
1783 "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>."
1784 },
1785 {
1786 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01461",
1787 "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>."
1788 },
1789 {
1790 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01462",
1791 "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>."
1792 },
1793 {
1794 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01539",
1795 "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>."
1796 },
1797 {
1798 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-name-01540",
1799 "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>."
1800 },
1801 {
1802 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-sType-sType",
1803 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>"
1804 },
1805 {
1806 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-pNext-pNext",
1807 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1808 },
1809 {
1810 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-fence-parameter",
1811 "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
1812 },
1813 {
1814 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-flags-parameter",
1815 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values"
1816 },
1817 {
1818 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-parameter",
1819 "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"
1820 }
1821 ]
1822 },
1823 "vkImportFenceFdKHR": {
1824 "(VK_KHR_external_fence_fd)": [
1825 {
1826 "vuid": "VUID-vkImportFenceFdKHR-fence-01463",
1827 "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"
1828 },
1829 {
1830 "vuid": "VUID-vkImportFenceFdKHR-device-parameter",
1831 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1832 },
1833 {
1834 "vuid": "VUID-vkImportFenceFdKHR-pImportFenceFdInfo-parameter",
1835 "text": " <code>pImportFenceFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportFenceFdInfoKHR</code> structure"
1836 }
1837 ]
1838 },
1839 "VkImportFenceFdInfoKHR": {
1840 "(VK_KHR_external_fence_fd)": [
1841 {
1842 "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-01464",
1843 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-fence-handletypes-fd\">Handle Types Supported by VkImportFenceFdInfoKHR</a> table."
1844 },
1845 {
1846 "vuid": "VUID-VkImportFenceFdInfoKHR-fd-01541",
1847 "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>."
1848 },
1849 {
1850 "vuid": "VUID-VkImportFenceFdInfoKHR-sType-sType",
1851 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR</code>"
1852 },
1853 {
1854 "vuid": "VUID-VkImportFenceFdInfoKHR-pNext-pNext",
1855 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1856 },
1857 {
1858 "vuid": "VUID-VkImportFenceFdInfoKHR-fence-parameter",
1859 "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
1860 },
1861 {
1862 "vuid": "VUID-VkImportFenceFdInfoKHR-flags-parameter",
1863 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values"
1864 },
1865 {
1866 "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-parameter",
1867 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
1868 }
1869 ]
1870 },
1871 "vkCreateSemaphore": {
1872 "core": [
1873 {
1874 "vuid": "VUID-vkCreateSemaphore-device-parameter",
1875 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1876 },
1877 {
1878 "vuid": "VUID-vkCreateSemaphore-pCreateInfo-parameter",
1879 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreCreateInfo</code> structure"
1880 },
1881 {
1882 "vuid": "VUID-vkCreateSemaphore-pAllocator-parameter",
1883 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
1884 },
1885 {
1886 "vuid": "VUID-vkCreateSemaphore-pSemaphore-parameter",
1887 "text": " <code>pSemaphore</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSemaphore</code> handle"
1888 }
1889 ]
1890 },
1891 "VkSemaphoreCreateInfo": {
1892 "core": [
1893 {
1894 "vuid": "VUID-VkSemaphoreCreateInfo-sType-sType",
1895 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO</code>"
1896 },
1897 {
1898 "vuid": "VUID-VkSemaphoreCreateInfo-pNext-pNext",
1899 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a> or <a href=\"#VkExportSemaphoreWin32HandleInfoKHR\">VkExportSemaphoreWin32HandleInfoKHR</a>"
1900 },
1901 {
1902 "vuid": "VUID-VkSemaphoreCreateInfo-sType-unique",
1903 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
1904 },
1905 {
1906 "vuid": "VUID-VkSemaphoreCreateInfo-flags-zerobitmask",
1907 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
1908 }
1909 ]
1910 },
1911 "VkExportSemaphoreCreateInfo": {
1912 "(VK_VERSION_1_1,VK_KHR_external_semaphore)": [
1913 {
1914 "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-01124",
1915 "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>."
1916 },
1917 {
1918 "vuid": "VUID-VkExportSemaphoreCreateInfo-sType-sType",
1919 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO</code>"
1920 },
1921 {
1922 "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-parameter",
1923 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> values"
1924 }
1925 ]
1926 },
1927 "VkExportSemaphoreWin32HandleInfoKHR": {
1928 "(VK_KHR_external_semaphore_win32)": [
1929 {
1930 "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-handleTypes-01125",
1931 "text": " If <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT</code>, <code>VkExportSemaphoreWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>."
1932 },
1933 {
1934 "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-sType-sType",
1935 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>"
1936 },
1937 {
1938 "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-pAttributes-parameter",
1939 "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"
1940 }
1941 ]
1942 },
1943 "vkGetSemaphoreWin32HandleKHR": {
1944 "(VK_KHR_external_semaphore_win32)": [
1945 {
1946 "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-device-parameter",
1947 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
1948 },
1949 {
1950 "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pGetWin32HandleInfo-parameter",
1951 "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreGetWin32HandleInfoKHR</code> structure"
1952 },
1953 {
1954 "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pHandle-parameter",
1955 "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
1956 }
1957 ]
1958 },
1959 "VkSemaphoreGetWin32HandleInfoKHR": {
1960 "(VK_KHR_external_semaphore_win32)": [
1961 {
1962 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01126",
1963 "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."
1964 },
1965 {
1966 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01127",
1967 "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>."
1968 },
1969 {
1970 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-01128",
1971 "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>."
1972 },
1973 {
1974 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01129",
1975 "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>."
1976 },
1977 {
1978 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01130",
1979 "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."
1980 },
1981 {
1982 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01131",
1983 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle."
1984 },
1985 {
1986 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-sType-sType",
1987 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR</code>"
1988 },
1989 {
1990 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-pNext-pNext",
1991 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
1992 },
1993 {
1994 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-parameter",
1995 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
1996 },
1997 {
1998 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter",
1999 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
2000 }
2001 ]
2002 },
2003 "vkGetSemaphoreFdKHR": {
2004 "(VK_KHR_external_semaphore_fd)": [
2005 {
2006 "vuid": "VUID-vkGetSemaphoreFdKHR-device-parameter",
2007 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2008 },
2009 {
2010 "vuid": "VUID-vkGetSemaphoreFdKHR-pGetFdInfo-parameter",
2011 "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreGetFdInfoKHR</code> structure"
2012 },
2013 {
2014 "vuid": "VUID-vkGetSemaphoreFdKHR-pFd-parameter",
2015 "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value"
2016 }
2017 ]
2018 },
2019 "VkSemaphoreGetFdInfoKHR": {
2020 "(VK_KHR_external_semaphore_fd)": [
2021 {
2022 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01132",
2023 "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."
2024 },
2025 {
2026 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-01133",
2027 "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>."
2028 },
2029 {
2030 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01134",
2031 "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>."
2032 },
2033 {
2034 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01135",
2035 "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."
2036 },
2037 {
2038 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01136",
2039 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
2040 },
2041 {
2042 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-sType-sType",
2043 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR</code>"
2044 },
2045 {
2046 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-pNext-pNext",
2047 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2048 },
2049 {
2050 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-parameter",
2051 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
2052 },
2053 {
2054 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter",
2055 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
2056 }
2057 ]
2058 },
2059 "vkDestroySemaphore": {
2060 "core": [
2061 {
2062 "vuid": "VUID-vkDestroySemaphore-semaphore-01137",
2063 "text": " All submitted batches that refer to <code>semaphore</code> <strong class=\"purple\">must</strong> have completed execution"
2064 },
2065 {
2066 "vuid": "VUID-vkDestroySemaphore-semaphore-01138",
2067 "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"
2068 },
2069 {
2070 "vuid": "VUID-vkDestroySemaphore-semaphore-01139",
2071 "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>"
2072 },
2073 {
2074 "vuid": "VUID-vkDestroySemaphore-device-parameter",
2075 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2076 },
2077 {
2078 "vuid": "VUID-vkDestroySemaphore-semaphore-parameter",
2079 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
2080 },
2081 {
2082 "vuid": "VUID-vkDestroySemaphore-pAllocator-parameter",
2083 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
2084 },
2085 {
2086 "vuid": "VUID-vkDestroySemaphore-semaphore-parent",
2087 "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>"
2088 }
2089 ]
2090 },
2091 "vkImportSemaphoreWin32HandleKHR": {
2092 "(VK_KHR_external_semaphore_win32)": [
2093 {
2094 "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-device-parameter",
2095 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2096 },
2097 {
2098 "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-pImportSemaphoreWin32HandleInfo-parameter",
2099 "text": " <code>pImportSemaphoreWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportSemaphoreWin32HandleInfoKHR</code> structure"
2100 }
2101 ]
2102 },
2103 "VkImportSemaphoreWin32HandleInfoKHR": {
2104 "(VK_KHR_external_semaphore_win32)": [
2105 {
2106 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140",
2107 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-win32\">Handle Types Supported by VkImportSemaphoreWin32HandleInfoKHR</a> table."
2108 },
2109 {
2110 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466",
2111 "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>."
2112 },
2113 {
2114 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01467",
2115 "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>."
2116 },
2117 {
2118 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01468",
2119 "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>."
2120 },
2121 {
2122 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01469",
2123 "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>."
2124 },
2125 {
2126 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542",
2127 "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>."
2128 },
2129 {
2130 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543",
2131 "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>."
2132 },
2133 {
2134 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-sType-sType",
2135 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>"
2136 },
2137 {
2138 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-pNext-pNext",
2139 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2140 },
2141 {
2142 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-semaphore-parameter",
2143 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
2144 },
2145 {
2146 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-parameter",
2147 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values"
2148 },
2149 {
2150 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-parameter",
2151 "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"
2152 }
2153 ]
2154 },
2155 "vkImportSemaphoreFdKHR": {
2156 "(VK_KHR_external_semaphore_fd)": [
2157 {
2158 "vuid": "VUID-vkImportSemaphoreFdKHR-semaphore-01142",
2159 "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"
2160 },
2161 {
2162 "vuid": "VUID-vkImportSemaphoreFdKHR-device-parameter",
2163 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2164 },
2165 {
2166 "vuid": "VUID-vkImportSemaphoreFdKHR-pImportSemaphoreFdInfo-parameter",
2167 "text": " <code>pImportSemaphoreFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportSemaphoreFdInfoKHR</code> structure"
2168 }
2169 ]
2170 },
2171 "VkImportSemaphoreFdInfoKHR": {
2172 "(VK_KHR_external_semaphore_fd)": [
2173 {
2174 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-01143",
2175 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-fd\">Handle Types Supported by VkImportSemaphoreFdInfoKHR</a> table."
2176 },
2177 {
2178 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-fd-01544",
2179 "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>."
2180 },
2181 {
2182 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-sType-sType",
2183 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR</code>"
2184 },
2185 {
2186 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-pNext-pNext",
2187 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2188 },
2189 {
2190 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-semaphore-parameter",
2191 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
2192 },
2193 {
2194 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-parameter",
2195 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values"
2196 },
2197 {
2198 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-parameter",
2199 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
2200 }
2201 ]
2202 },
2203 "vkCreateEvent": {
2204 "core": [
2205 {
2206 "vuid": "VUID-vkCreateEvent-device-parameter",
2207 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2208 },
2209 {
2210 "vuid": "VUID-vkCreateEvent-pCreateInfo-parameter",
2211 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkEventCreateInfo</code> structure"
2212 },
2213 {
2214 "vuid": "VUID-vkCreateEvent-pAllocator-parameter",
2215 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
2216 },
2217 {
2218 "vuid": "VUID-vkCreateEvent-pEvent-parameter",
2219 "text": " <code>pEvent</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkEvent</code> handle"
2220 }
2221 ]
2222 },
2223 "VkEventCreateInfo": {
2224 "core": [
2225 {
2226 "vuid": "VUID-VkEventCreateInfo-sType-sType",
2227 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EVENT_CREATE_INFO</code>"
2228 },
2229 {
2230 "vuid": "VUID-VkEventCreateInfo-pNext-pNext",
2231 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2232 },
2233 {
2234 "vuid": "VUID-VkEventCreateInfo-flags-zerobitmask",
2235 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
2236 }
2237 ]
2238 },
2239 "vkDestroyEvent": {
2240 "core": [
2241 {
2242 "vuid": "VUID-vkDestroyEvent-event-01145",
2243 "text": " All submitted commands that refer to <code>event</code> <strong class=\"purple\">must</strong> have completed execution"
2244 },
2245 {
2246 "vuid": "VUID-vkDestroyEvent-event-01146",
2247 "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"
2248 },
2249 {
2250 "vuid": "VUID-vkDestroyEvent-event-01147",
2251 "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>"
2252 },
2253 {
2254 "vuid": "VUID-vkDestroyEvent-device-parameter",
2255 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2256 },
2257 {
2258 "vuid": "VUID-vkDestroyEvent-event-parameter",
2259 "text": " If <code>event</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
2260 },
2261 {
2262 "vuid": "VUID-vkDestroyEvent-pAllocator-parameter",
2263 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
2264 },
2265 {
2266 "vuid": "VUID-vkDestroyEvent-event-parent",
2267 "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>"
2268 }
2269 ]
2270 },
2271 "vkGetEventStatus": {
2272 "core": [
2273 {
2274 "vuid": "VUID-vkGetEventStatus-device-parameter",
2275 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2276 },
2277 {
2278 "vuid": "VUID-vkGetEventStatus-event-parameter",
2279 "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
2280 },
2281 {
2282 "vuid": "VUID-vkGetEventStatus-event-parent",
2283 "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2284 }
2285 ]
2286 },
2287 "vkSetEvent": {
2288 "core": [
2289 {
2290 "vuid": "VUID-vkSetEvent-device-parameter",
2291 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2292 },
2293 {
2294 "vuid": "VUID-vkSetEvent-event-parameter",
2295 "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
2296 },
2297 {
2298 "vuid": "VUID-vkSetEvent-event-parent",
2299 "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2300 }
2301 ]
2302 },
2303 "vkResetEvent": {
2304 "core": [
2305 {
2306 "vuid": "VUID-vkResetEvent-event-01148",
2307 "text": " <code>event</code> <strong class=\"purple\">must</strong> not be waited on by a <code>vkCmdWaitEvents</code> command that is currently executing"
2308 },
2309 {
2310 "vuid": "VUID-vkResetEvent-device-parameter",
2311 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2312 },
2313 {
2314 "vuid": "VUID-vkResetEvent-event-parameter",
2315 "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
2316 },
2317 {
2318 "vuid": "VUID-vkResetEvent-event-parent",
2319 "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
2320 }
2321 ]
2322 },
2323 "vkCmdSetEvent": {
2324 "core": [
2325 {
2326 "vuid": "VUID-vkCmdSetEvent-stageMask-01149",
2327 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
2328 },
2329 {
2330 "vuid": "VUID-vkCmdSetEvent-stageMask-01150",
2331 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
2332 },
2333 {
2334 "vuid": "VUID-vkCmdSetEvent-stageMask-01151",
2335 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
2336 },
2337 {
2338 "vuid": "VUID-vkCmdSetEvent-commandBuffer-parameter",
2339 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
2340 },
2341 {
2342 "vuid": "VUID-vkCmdSetEvent-event-parameter",
2343 "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
2344 },
2345 {
2346 "vuid": "VUID-vkCmdSetEvent-stageMask-parameter",
2347 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2348 },
2349 {
2350 "vuid": "VUID-vkCmdSetEvent-stageMask-requiredbitmask",
2351 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2352 },
2353 {
2354 "vuid": "VUID-vkCmdSetEvent-commandBuffer-recording",
2355 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
2356 },
2357 {
2358 "vuid": "VUID-vkCmdSetEvent-commandBuffer-cmdpool",
2359 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
2360 },
2361 {
2362 "vuid": "VUID-vkCmdSetEvent-renderpass",
2363 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
2364 },
2365 {
2366 "vuid": "VUID-vkCmdSetEvent-commonparent",
2367 "text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
2368 }
2369 ],
2370 "(VK_VERSION_1_1,VK_KHR_device_group)": [
2371 {
2372 "vuid": "VUID-vkCmdSetEvent-commandBuffer-01152",
2373 "text": " <code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device."
2374 }
2375 ],
2376 "(VK_NV_mesh_shader)": [
2377 {
2378 "vuid": "VUID-vkCmdSetEvent-stageMask-02107",
2379 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
2380 },
2381 {
2382 "vuid": "VUID-vkCmdSetEvent-stageMask-02108",
2383 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
2384 }
2385 ]
2386 },
2387 "vkCmdResetEvent": {
2388 "core": [
2389 {
2390 "vuid": "VUID-vkCmdResetEvent-stageMask-01153",
2391 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
2392 },
2393 {
2394 "vuid": "VUID-vkCmdResetEvent-stageMask-01154",
2395 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
2396 },
2397 {
2398 "vuid": "VUID-vkCmdResetEvent-stageMask-01155",
2399 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
2400 },
2401 {
2402 "vuid": "VUID-vkCmdResetEvent-event-01156",
2403 "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"
2404 },
2405 {
2406 "vuid": "VUID-vkCmdResetEvent-commandBuffer-parameter",
2407 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
2408 },
2409 {
2410 "vuid": "VUID-vkCmdResetEvent-event-parameter",
2411 "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
2412 },
2413 {
2414 "vuid": "VUID-vkCmdResetEvent-stageMask-parameter",
2415 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2416 },
2417 {
2418 "vuid": "VUID-vkCmdResetEvent-stageMask-requiredbitmask",
2419 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2420 },
2421 {
2422 "vuid": "VUID-vkCmdResetEvent-commandBuffer-recording",
2423 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
2424 },
2425 {
2426 "vuid": "VUID-vkCmdResetEvent-commandBuffer-cmdpool",
2427 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
2428 },
2429 {
2430 "vuid": "VUID-vkCmdResetEvent-renderpass",
2431 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
2432 },
2433 {
2434 "vuid": "VUID-vkCmdResetEvent-commonparent",
2435 "text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
2436 }
2437 ],
2438 "(VK_VERSION_1_1,VK_KHR_device_group)": [
2439 {
2440 "vuid": "VUID-vkCmdResetEvent-commandBuffer-01157",
2441 "text": " <code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device."
2442 }
2443 ],
2444 "(VK_NV_mesh_shader)": [
2445 {
2446 "vuid": "VUID-vkCmdResetEvent-stageMask-02109",
2447 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
2448 },
2449 {
2450 "vuid": "VUID-vkCmdResetEvent-stageMask-02110",
2451 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
2452 }
2453 ]
2454 },
2455 "vkCmdWaitEvents": {
2456 "core": [
2457 {
2458 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01158",
2459 "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>"
2460 },
2461 {
2462 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01159",
2463 "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>"
2464 },
2465 {
2466 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-01160",
2467 "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>"
2468 },
2469 {
2470 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01161",
2471 "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>"
2472 },
2473 {
2474 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-01162",
2475 "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>"
2476 },
2477 {
2478 "vuid": "VUID-vkCmdWaitEvents-pEvents-01163",
2479 "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"
2480 },
2481 {
2482 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01164",
2483 "text": " Any pipeline stage included in <code>srcStageMask</code> or <code>dstStageMask</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>."
2484 },
2485 {
2486 "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-01165",
2487 "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>srcAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>."
2488 },
2489 {
2490 "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-01166",
2491 "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>dstAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>."
2492 },
2493 {
2494 "vuid": "VUID-vkCmdWaitEvents-commandBuffer-parameter",
2495 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
2496 },
2497 {
2498 "vuid": "VUID-vkCmdWaitEvents-pEvents-parameter",
2499 "text": " <code>pEvents</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>eventCount</code> valid <code>VkEvent</code> handles"
2500 },
2501 {
2502 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-parameter",
2503 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2504 },
2505 {
2506 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-requiredbitmask",
2507 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2508 },
2509 {
2510 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-parameter",
2511 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2512 },
2513 {
2514 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-requiredbitmask",
2515 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2516 },
2517 {
2518 "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-parameter",
2519 "text": " If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <code>VkMemoryBarrier</code> structures"
2520 },
2521 {
2522 "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter",
2523 "text": " If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <code>VkBufferMemoryBarrier</code> structures"
2524 },
2525 {
2526 "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter",
2527 "text": " If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <code>VkImageMemoryBarrier</code> structures"
2528 },
2529 {
2530 "vuid": "VUID-vkCmdWaitEvents-commandBuffer-recording",
2531 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
2532 },
2533 {
2534 "vuid": "VUID-vkCmdWaitEvents-commandBuffer-cmdpool",
2535 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
2536 },
2537 {
2538 "vuid": "VUID-vkCmdWaitEvents-eventCount-arraylength",
2539 "text": " <code>eventCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
2540 },
2541 {
2542 "vuid": "VUID-vkCmdWaitEvents-commonparent",
2543 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pEvents</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
2544 }
2545 ],
2546 "(VK_VERSION_1_1,VK_KHR_device_group)": [
2547 {
2548 "vuid": "VUID-vkCmdWaitEvents-commandBuffer-01167",
2549 "text": " <code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device."
2550 }
2551 ],
2552 "(VK_NV_mesh_shader)": [
2553 {
2554 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-02111",
2555 "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>"
2556 },
2557 {
2558 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-02112",
2559 "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>"
2560 },
2561 {
2562 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-02113",
2563 "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>"
2564 },
2565 {
2566 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-02114",
2567 "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>"
2568 }
2569 ]
2570 },
2571 "vkCmdPipelineBarrier": {
2572 "core": [
2573 {
2574 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01168",
2575 "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>"
2576 },
2577 {
2578 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01169",
2579 "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>"
2580 },
2581 {
2582 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01170",
2583 "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>"
2584 },
2585 {
2586 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01171",
2587 "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>"
2588 },
2589 {
2590 "vuid": "VUID-vkCmdPipelineBarrier-pDependencies-02285",
2591 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the render pass <strong class=\"purple\">must</strong> have been created with at least one <code>VkSubpassDependency</code> instance in <code>VkRenderPassCreateInfo</code>::<code>pDependencies</code> that expresses a dependency from the current subpass to itself, and for which <code>srcStageMask</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>srcStageMask</code>, <code>dstStageMask</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>dstStageMask</code>, <code>dependencyFlags</code> is equal to <code>VkSubpassDependency</code>::<code>dependencyFlags</code>, <code>srcAccessMask</code> member of each element of <code>pMemoryBarriers</code> and <code>pImageMemoryBarriers</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>srcAccessMask</code>, and <code>dstAccessMask</code> member of each element of <code>pMemoryBarriers</code> and <code>pImageMemoryBarriers</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>dstAccessMask</code>"
2592 },
2593 {
2594 "vuid": "VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178",
2595 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, <code>bufferMemoryBarrierCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
2596 },
2597 {
2598 "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-01181",
2599 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of an element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal"
2600 },
2601 {
2602 "vuid": "VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182",
2603 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>"
2604 },
2605 {
2606 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01183",
2607 "text": " Any pipeline stage included in <code>srcStageMask</code> or <code>dstStageMask</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>."
2608 },
2609 {
2610 "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-01184",
2611 "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> and <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>srcAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>."
2612 },
2613 {
2614 "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-01185",
2615 "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> and <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>dstAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>."
2616 },
2617 {
2618 "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-parameter",
2619 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
2620 },
2621 {
2622 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-parameter",
2623 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2624 },
2625 {
2626 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-requiredbitmask",
2627 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2628 },
2629 {
2630 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-parameter",
2631 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
2632 },
2633 {
2634 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-requiredbitmask",
2635 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
2636 },
2637 {
2638 "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-parameter",
2639 "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
2640 },
2641 {
2642 "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter",
2643 "text": " If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <code>VkMemoryBarrier</code> structures"
2644 },
2645 {
2646 "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter",
2647 "text": " If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <code>VkBufferMemoryBarrier</code> structures"
2648 },
2649 {
2650 "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter",
2651 "text": " If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <code>VkImageMemoryBarrier</code> structures"
2652 },
2653 {
2654 "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-recording",
2655 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
2656 },
2657 {
2658 "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool",
2659 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
2660 }
2661 ],
2662 "(VK_KHR_depth_stencil_resolve)": [
2663 {
2664 "vuid": "VUID-vkCmdPipelineBarrier-image-02635",
2665 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>image</code> member of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to one of the elements of <code>pAttachments</code> that the current <code>framebuffer</code> was created with, that is also referred to by one of the elements of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance or by the <code>pDepthStencilResolveAttachment</code> member of the <code>VkSubpassDescriptionDepthStencilResolveKHR</code> structure that the current subpass was created with"
2666 },
2667 {
2668 "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-02636",
2669 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to the <code>layout</code> member of an element of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance or by the <code>pDepthStencilResolveAttachment</code> member of the <code>VkSubpassDescriptionDepthStencilResolveKHR</code> structure that the current subpass was created with, that refers to the same <code>image</code>"
2670 }
2671 ],
2672 "!(VK_KHR_depth_stencil_resolve)": [
2673 {
2674 "vuid": "VUID-vkCmdPipelineBarrier-image-02637",
2675 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>image</code> member of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to one of the elements of <code>pAttachments</code> that the current <code>framebuffer</code> was created with, that is also referred to by one of the elements of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance that the current subpass was created with"
2676 },
2677 {
2678 "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-02638",
2679 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to the <code>layout</code> member of an element of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance that the current subpass was created with, that refers to the same <code>image</code>"
2680 }
2681 ],
2682 "(VK_VERSION_1_1,VK_KHR_multiview)": [
2683 {
2684 "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-01186",
2685 "text": " If <code>vkCmdPipelineBarrier</code> is called outside of a render pass instance, <code>dependencyFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
2686 }
2687 ],
2688 "(VK_NV_mesh_shader)": [
2689 {
2690 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-02115",
2691 "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>"
2692 },
2693 {
2694 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-02116",
2695 "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>"
2696 },
2697 {
2698 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-02117",
2699 "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>"
2700 },
2701 {
2702 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-02118",
2703 "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>"
2704 }
2705 ]
2706 },
2707 "VkMemoryBarrier": {
2708 "core": [
2709 {
2710 "vuid": "VUID-VkMemoryBarrier-sType-sType",
2711 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_BARRIER</code>"
2712 },
2713 {
2714 "vuid": "VUID-VkMemoryBarrier-pNext-pNext",
2715 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2716 },
2717 {
2718 "vuid": "VUID-VkMemoryBarrier-srcAccessMask-parameter",
2719 "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
2720 },
2721 {
2722 "vuid": "VUID-VkMemoryBarrier-dstAccessMask-parameter",
2723 "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
2724 }
2725 ]
2726 },
2727 "VkBufferMemoryBarrier": {
2728 "core": [
2729 {
2730 "vuid": "VUID-VkBufferMemoryBarrier-offset-01187",
2731 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
2732 },
2733 {
2734 "vuid": "VUID-VkBufferMemoryBarrier-size-01188",
2735 "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>"
2736 },
2737 {
2738 "vuid": "VUID-VkBufferMemoryBarrier-size-01189",
2739 "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>"
2740 },
2741 {
2742 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01196",
2743 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not <code>VK_QUEUE_FAMILY_IGNORED</code>, at least one of them <strong class=\"purple\">must</strong> be the same as the family of the queue that will execute this barrier"
2744 },
2745 {
2746 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01931",
2747 "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"
2748 },
2749 {
2750 "vuid": "VUID-VkBufferMemoryBarrier-sType-sType",
2751 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER</code>"
2752 },
2753 {
2754 "vuid": "VUID-VkBufferMemoryBarrier-pNext-pNext",
2755 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
2756 },
2757 {
2758 "vuid": "VUID-VkBufferMemoryBarrier-srcAccessMask-parameter",
2759 "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
2760 },
2761 {
2762 "vuid": "VUID-VkBufferMemoryBarrier-dstAccessMask-parameter",
2763 "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
2764 },
2765 {
2766 "vuid": "VUID-VkBufferMemoryBarrier-buffer-parameter",
2767 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
2768 }
2769 ],
2770 "!(VK_VERSION_1_1,VK_KHR_external_memory)": [
2771 {
2772 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01190",
2773 "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>"
2774 },
2775 {
2776 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01192",
2777 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> either both be <code>VK_QUEUE_FAMILY_IGNORED</code>, or both be a valid queue family (see <a href=\"#devsandqueues-queueprops\">Queue Family Properties</a>)"
2778 }
2779 ],
2780 "(VK_VERSION_1_1,VK_KHR_external_memory)": [
2781 {
2782 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01191",
2783 "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>"
2784 },
2785 {
2786 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01763",
2787 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or a special queue family reserved for external memory ownership transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
2788 },
2789 {
2790 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01193",
2791 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> also be <code>VK_QUEUE_FAMILY_IGNORED</code>"
2792 },
2793 {
2794 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01764",
2795 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
2796 },
2797 {
2798 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01765",
2799 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>dstQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
2800 }
2801 ]
2802 },
2803 "VkImageMemoryBarrier": {
2804 "core": [
2805 {
2806 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01197",
2807 "text": " <code>oldLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or the current layout of the image subresources affected by the barrier"
2808 },
2809 {
2810 "vuid": "VUID-VkImageMemoryBarrier-newLayout-01198",
2811 "text": " <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
2812 },
2813 {
2814 "vuid": "VUID-VkImageMemoryBarrier-image-01205",
2815 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not <code>VK_QUEUE_FAMILY_IGNORED</code>, at least one of them <strong class=\"purple\">must</strong> be the same as the family of the queue that will execute this barrier"
2816 },
2817 {
2818 "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01486",
2819 "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"
2820 },
2821 {
2822 "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01724",
2823 "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"
2824 },
2825 {
2826 "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01488",
2827 "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"
2828 },
2829 {
2830 "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01725",
2831 "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"
2832 },
2833 {
2834 "vuid": "VUID-VkImageMemoryBarrier-image-01207",
2835 "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>"
2836 },
2837 {
2838 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01208",
2839 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> set"
2840 },
2841 {
2842 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01209",
2843 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
2844 },
2845 {
2846 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01210",
2847 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
2848 },
2849 {
2850 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01211",
2851 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set"
2852 },
2853 {
2854 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01212",
2855 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> set"
2856 },
2857 {
2858 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01213",
2859 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> set"
2860 },
2861 {
2862 "vuid": "VUID-VkImageMemoryBarrier-image-01932",
2863 "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"
2864 },
2865 {
2866 "vuid": "VUID-VkImageMemoryBarrier-sType-sType",
2867 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER</code>"
2868 },
2869 {
2870 "vuid": "VUID-VkImageMemoryBarrier-pNext-pNext",
2871 "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>"
2872 },
2873 {
2874 "vuid": "VUID-VkImageMemoryBarrier-srcAccessMask-parameter",
2875 "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
2876 },
2877 {
2878 "vuid": "VUID-VkImageMemoryBarrier-dstAccessMask-parameter",
2879 "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
2880 },
2881 {
2882 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-parameter",
2883 "text": " <code>oldLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
2884 },
2885 {
2886 "vuid": "VUID-VkImageMemoryBarrier-newLayout-parameter",
2887 "text": " <code>newLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
2888 },
2889 {
2890 "vuid": "VUID-VkImageMemoryBarrier-image-parameter",
2891 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
2892 },
2893 {
2894 "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-parameter",
2895 "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceRange</code> structure"
2896 }
2897 ],
2898 "!(VK_VERSION_1_1,VK_KHR_external_memory)": [
2899 {
2900 "vuid": "VUID-VkImageMemoryBarrier-image-01199",
2901 "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>"
2902 },
2903 {
2904 "vuid": "VUID-VkImageMemoryBarrier-image-01200",
2905 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> either both be <code>VK_QUEUE_FAMILY_IGNORED</code>, or both be a valid queue family (see <a href=\"#devsandqueues-queueprops\">Queue Family Properties</a>)."
2906 }
2907 ],
2908 "(VK_VERSION_1_1,VK_KHR_external_memory)": [
2909 {
2910 "vuid": "VUID-VkImageMemoryBarrier-image-01381",
2911 "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>"
2912 },
2913 {
2914 "vuid": "VUID-VkImageMemoryBarrier-image-01766",
2915 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
2916 },
2917 {
2918 "vuid": "VUID-VkImageMemoryBarrier-image-01201",
2919 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> also be <code>VK_QUEUE_FAMILY_IGNORED</code>."
2920 },
2921 {
2922 "vuid": "VUID-VkImageMemoryBarrier-image-01767",
2923 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
2924 },
2925 {
2926 "vuid": "VUID-VkImageMemoryBarrier-image-01768",
2927 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>dstQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
2928 }
2929 ],
2930 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
2931 {
2932 "vuid": "VUID-VkImageMemoryBarrier-image-01671",
2933 "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>"
2934 },
2935 {
2936 "vuid": "VUID-VkImageMemoryBarrier-image-01672",
2937 "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>"
2938 },
2939 {
2940 "vuid": "VUID-VkImageMemoryBarrier-image-01673",
2941 "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>"
2942 }
2943 ],
2944 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
2945 {
2946 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01658",
2947 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
2948 },
2949 {
2950 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01659",
2951 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
2952 }
2953 ],
2954 "(VK_NV_shading_rate_image)": [
2955 {
2956 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-02088",
2957 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code> set"
2958 }
2959 ]
2960 },
2961 "vkQueueWaitIdle": {
2962 "core": [
2963 {
2964 "vuid": "VUID-vkQueueWaitIdle-queue-parameter",
2965 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
2966 }
2967 ]
2968 },
2969 "vkDeviceWaitIdle": {
2970 "core": [
2971 {
2972 "vuid": "VUID-vkDeviceWaitIdle-device-parameter",
2973 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2974 }
2975 ]
2976 },
2977 "vkGetCalibratedTimestampsEXT": {
2978 "(VK_EXT_calibrated_timestamps)": [
2979 {
2980 "vuid": "VUID-vkGetCalibratedTimestampsEXT-device-parameter",
2981 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
2982 },
2983 {
2984 "vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestampInfos-parameter",
2985 "text": " <code>pTimestampInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>timestampCount</code> valid <code>VkCalibratedTimestampInfoEXT</code> structures"
2986 },
2987 {
2988 "vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestamps-parameter",
2989 "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"
2990 },
2991 {
2992 "vuid": "VUID-vkGetCalibratedTimestampsEXT-pMaxDeviation-parameter",
2993 "text": " <code>pMaxDeviation</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
2994 },
2995 {
2996 "vuid": "VUID-vkGetCalibratedTimestampsEXT-timestampCount-arraylength",
2997 "text": " <code>timestampCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
2998 }
2999 ]
3000 },
3001 "VkCalibratedTimestampInfoEXT": {
3002 "(VK_EXT_calibrated_timestamps)": [
3003 {
3004 "vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-02354",
3005 "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>"
3006 },
3007 {
3008 "vuid": "VUID-VkCalibratedTimestampInfoEXT-sType-sType",
3009 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT</code>"
3010 },
3011 {
3012 "vuid": "VUID-VkCalibratedTimestampInfoEXT-pNext-pNext",
3013 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
3014 },
3015 {
3016 "vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-parameter",
3017 "text": " <code>timeDomain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> value"
3018 }
3019 ]
3020 },
3021 "vkCreateRenderPass": {
3022 "core": [
3023 {
3024 "vuid": "VUID-vkCreateRenderPass-device-parameter",
3025 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
3026 },
3027 {
3028 "vuid": "VUID-vkCreateRenderPass-pCreateInfo-parameter",
3029 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassCreateInfo</code> structure"
3030 },
3031 {
3032 "vuid": "VUID-vkCreateRenderPass-pAllocator-parameter",
3033 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
3034 },
3035 {
3036 "vuid": "VUID-vkCreateRenderPass-pRenderPass-parameter",
3037 "text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkRenderPass</code> handle"
3038 }
3039 ]
3040 },
3041 "VkRenderPassCreateInfo": {
3042 "core": [
3043 {
3044 "vuid": "VUID-VkRenderPassCreateInfo-attachment-00834",
3045 "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>"
3046 },
3047 {
3048 "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-00836",
3049 "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>."
3050 },
3051 {
3052 "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-02511",
3053 "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>."
3054 },
3055 {
3056 "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00837",
3057 "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"
3058 },
3059 {
3060 "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00838",
3061 "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"
3062 },
3063 {
3064 "vuid": "VUID-VkRenderPassCreateInfo-srcSubpass-02517",
3065 "text": " The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
3066 },
3067 {
3068 "vuid": "VUID-VkRenderPassCreateInfo-dstSubpass-02518",
3069 "text": " The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
3070 },
3071 {
3072 "vuid": "VUID-VkRenderPassCreateInfo-sType-sType",
3073 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO</code>"
3074 },
3075 {
3076 "vuid": "VUID-VkRenderPassCreateInfo-pNext-pNext",
3077 "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>"
3078 },
3079 {
3080 "vuid": "VUID-VkRenderPassCreateInfo-sType-unique",
3081 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
3082 },
3083 {
3084 "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-parameter",
3085 "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkAttachmentDescription</code> structures"
3086 },
3087 {
3088 "vuid": "VUID-VkRenderPassCreateInfo-pSubpasses-parameter",
3089 "text": " <code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <code>VkSubpassDescription</code> structures"
3090 },
3091 {
3092 "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-parameter",
3093 "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pDependencies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> valid <code>VkSubpassDependency</code> structures"
3094 },
3095 {
3096 "vuid": "VUID-VkRenderPassCreateInfo-subpassCount-arraylength",
3097 "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
3098 }
3099 ],
3100 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
3101 {
3102 "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01566",
3103 "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>."
3104 },
3105 {
3106 "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01567",
3107 "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>."
3108 },
3109 {
3110 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01926",
3111 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, the <code>subpass</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
3112 },
3113 {
3114 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01927",
3115 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, the <code>inputAttachmentIndex</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than the value of <code>inputAttachmentCount</code> in the member of <code>pSubpasses</code> identified by its <code>subpass</code> member"
3116 },
3117 {
3118 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01963",
3119 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, for any element of the <code>pInputAttachments</code> member of any element of <code>pSubpasses</code> where the <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, the <code>aspectMask</code> member of the corresponding element of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>::<code>pAspectReferences</code> <strong class=\"purple\">must</strong> only include aspects that are present in images of the format specified by the element of <code>pAttachments</code> at <code>attachment</code>"
3120 }
3121 ],
3122 "(VK_VERSION_1_1,VK_KHR_multiview)": [
3123 {
3124 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01928",
3125 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and its <code>subpassCount</code> member is not zero, that member <strong class=\"purple\">must</strong> be equal to the value of <code>subpassCount</code>"
3126 },
3127 {
3128 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01929",
3129 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, if its <code>dependencyCount</code> member is not zero, it <strong class=\"purple\">must</strong> be equal to <code>dependencyCount</code>"
3130 },
3131 {
3132 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01930",
3133 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, for each non-zero element of <code>pViewOffsets</code>, the <code>srcSubpass</code> and <code>dstSubpass</code> members of <code>pDependencies</code> at the same index <strong class=\"purple\">must</strong> not be equal"
3134 },
3135 {
3136 "vuid": "VUID-VkRenderPassCreateInfo-pNext-02512",
3137 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, for any element of <code>pDependencies</code> with a <code>dependencyFlags</code> member that 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>"
3138 },
3139 {
3140 "vuid": "VUID-VkRenderPassCreateInfo-pNext-02513",
3141 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, elements of its <code>pViewMasks</code> member <strong class=\"purple\">must</strong> either all be <code>0</code>, or all not be <code>0</code>"
3142 },
3143 {
3144 "vuid": "VUID-VkRenderPassCreateInfo-pNext-02514",
3145 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and each element of its <code>pViewMasks</code> member is <code>0</code>, the <code>dependencyFlags</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
3146 },
3147 {
3148 "vuid": "VUID-VkRenderPassCreateInfo-pNext-02515",
3149 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and each element of its <code>pViewMasks</code> member is <code>0</code>, <code>correlatedViewMaskCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
3150 },
3151 {
3152 "vuid": "VUID-VkRenderPassCreateInfo-pNext-02516",
3153 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, each element of its <code>pViewMask</code> member <strong class=\"purple\">must</strong> not have a bit set at an index greater than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxFramebufferLayers</code>"
3154 }
3155 ]
3156 },
3157 "VkRenderPassMultiviewCreateInfo": {
3158 "(VK_VERSION_1_1,VK_KHR_multiview)": [
3159 {
3160 "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-00841",
3161 "text": " Each view index <strong class=\"purple\">must</strong> not be set in more than one element of <code>pCorrelationMasks</code>"
3162 },
3163 {
3164 "vuid": "VUID-VkRenderPassMultiviewCreateInfo-sType-sType",
3165 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO</code>"
3166 },
3167 {
3168 "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-parameter",
3169 "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"
3170 },
3171 {
3172 "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewOffsets-parameter",
3173 "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"
3174 },
3175 {
3176 "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-parameter",
3177 "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"
3178 }
3179 ]
3180 },
3181 "VkRenderPassFragmentDensityMapCreateInfoEXT": {
3182 "(VK_EXT_fragment_density_map)": [
3183 {
3184 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02547",
3185 "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>"
3186 },
3187 {
3188 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02548",
3189 "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"
3190 },
3191 {
3192 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02549",
3193 "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>"
3194 },
3195 {
3196 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02550",
3197 "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>."
3198 },
3199 {
3200 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02551",
3201 "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>."
3202 },
3203 {
3204 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-sType-sType",
3205 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT</code>"
3206 },
3207 {
3208 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-parameter",
3209 "text": " <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> be a valid <code>VkAttachmentReference</code> structure"
3210 }
3211 ]
3212 },
3213 "VkAttachmentDescription": {
3214 "core": [
3215 {
3216 "vuid": "VUID-VkAttachmentDescription-finalLayout-00843",
3217 "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
3218 },
3219 {
3220 "vuid": "VUID-VkAttachmentDescription-flags-parameter",
3221 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values"
3222 },
3223 {
3224 "vuid": "VUID-VkAttachmentDescription-format-parameter",
3225 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
3226 },
3227 {
3228 "vuid": "VUID-VkAttachmentDescription-samples-parameter",
3229 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
3230 },
3231 {
3232 "vuid": "VUID-VkAttachmentDescription-loadOp-parameter",
3233 "text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
3234 },
3235 {
3236 "vuid": "VUID-VkAttachmentDescription-storeOp-parameter",
3237 "text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
3238 },
3239 {
3240 "vuid": "VUID-VkAttachmentDescription-stencilLoadOp-parameter",
3241 "text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
3242 },
3243 {
3244 "vuid": "VUID-VkAttachmentDescription-stencilStoreOp-parameter",
3245 "text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
3246 },
3247 {
3248 "vuid": "VUID-VkAttachmentDescription-initialLayout-parameter",
3249 "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3250 },
3251 {
3252 "vuid": "VUID-VkAttachmentDescription-finalLayout-parameter",
3253 "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3254 }
3255 ]
3256 },
3257 "VkRenderPassInputAttachmentAspectCreateInfo": {
3258 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
3259 {
3260 "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-sType-sType",
3261 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO</code>"
3262 },
3263 {
3264 "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-pAspectReferences-parameter",
3265 "text": " <code>pAspectReferences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>aspectReferenceCount</code> valid <code>VkInputAttachmentAspectReference</code> structures"
3266 },
3267 {
3268 "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-aspectReferenceCount-arraylength",
3269 "text": " <code>aspectReferenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
3270 }
3271 ]
3272 },
3273 "VkInputAttachmentAspectReference": {
3274 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
3275 {
3276 "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-01964",
3277 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
3278 },
3279 {
3280 "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-parameter",
3281 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
3282 },
3283 {
3284 "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-requiredbitmask",
3285 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3286 }
3287 ],
3288 "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_image_drm_format_modifier)": [
3289 {
3290 "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-02250",
3291 "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>."
3292 }
3293 ]
3294 },
3295 "VkSubpassDescription": {
3296 "core": [
3297 {
3298 "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-00844",
3299 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
3300 },
3301 {
3302 "vuid": "VUID-VkSubpassDescription-colorAttachmentCount-00845",
3303 "text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>"
3304 },
3305 {
3306 "vuid": "VUID-VkSubpassDescription-loadOp-00846",
3307 "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>"
3308 },
3309 {
3310 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00847",
3311 "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>"
3312 },
3313 {
3314 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00848",
3315 "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>"
3316 },
3317 {
3318 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00849",
3319 "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>"
3320 },
3321 {
3322 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00850",
3323 "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"
3324 },
3325 {
3326 "vuid": "VUID-VkSubpassDescription-pColorAttachments-01417",
3327 "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"
3328 },
3329 {
3330 "vuid": "VUID-VkSubpassDescription-pInputAttachments-02647",
3331 "text": " All attachments in <code>pInputAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have formats whose features contain at least one of <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>."
3332 },
3333 {
3334 "vuid": "VUID-VkSubpassDescription-pColorAttachments-02648",
3335 "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have formats whose features contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>"
3336 },
3337 {
3338 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-02649",
3339 "text": " All attachments in <code>pResolveAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have formats whose features contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>"
3340 },
3341 {
3342 "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-02650",
3343 "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code> and the attachment is not <code>VK_ATTACHMENT_UNUSED</code> then it <strong class=\"purple\">must</strong> have a format whose features contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
3344 },
3345 {
3346 "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-01418",
3347 "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"
3348 },
3349 {
3350 "vuid": "VUID-VkSubpassDescription-attachment-00853",
3351 "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>"
3352 },
3353 {
3354 "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-00854",
3355 "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"
3356 },
3357 {
3358 "vuid": "VUID-VkSubpassDescription-layout-02519",
3359 "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>"
3360 },
3361 {
3362 "vuid": "VUID-VkSubpassDescription-flags-parameter",
3363 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values"
3364 },
3365 {
3366 "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-parameter",
3367 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
3368 },
3369 {
3370 "vuid": "VUID-VkSubpassDescription-pInputAttachments-parameter",
3371 "text": " If <code>inputAttachmentCount</code> is not <code>0</code>, <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>inputAttachmentCount</code> valid <code>VkAttachmentReference</code> structures"
3372 },
3373 {
3374 "vuid": "VUID-VkSubpassDescription-pColorAttachments-parameter",
3375 "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference</code> structures"
3376 },
3377 {
3378 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-parameter",
3379 "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, and <code>pResolveAttachments</code> is not <code>NULL</code>, <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference</code> structures"
3380 },
3381 {
3382 "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-parameter",
3383 "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAttachmentReference</code> structure"
3384 },
3385 {
3386 "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-parameter",
3387 "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"
3388 }
3389 ],
3390 "(VK_AMD_mixed_attachment_samples)": [
3391 {
3392 "vuid": "VUID-VkSubpassDescription-pColorAttachments-01506",
3393 "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>"
3394 }
3395 ],
3396 "(VK_NVX_multiview_per_view_attributes)": [
3397 {
3398 "vuid": "VUID-VkSubpassDescription-flags-00856",
3399 "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>."
3400 }
3401 ]
3402 },
3403 "VkAttachmentReference": {
3404 "core": [
3405 {
3406 "vuid": "VUID-VkAttachmentReference-layout-00857",
3407 "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
3408 },
3409 {
3410 "vuid": "VUID-VkAttachmentReference-layout-parameter",
3411 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3412 }
3413 ]
3414 },
3415 "VkSubpassDependency": {
3416 "core": [
3417 {
3418 "vuid": "VUID-VkSubpassDependency-srcStageMask-00860",
3419 "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>"
3420 },
3421 {
3422 "vuid": "VUID-VkSubpassDependency-dstStageMask-00861",
3423 "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>"
3424 },
3425 {
3426 "vuid": "VUID-VkSubpassDependency-srcStageMask-00862",
3427 "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>"
3428 },
3429 {
3430 "vuid": "VUID-VkSubpassDependency-dstStageMask-00863",
3431 "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>"
3432 },
3433 {
3434 "vuid": "VUID-VkSubpassDependency-srcSubpass-00864",
3435 "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"
3436 },
3437 {
3438 "vuid": "VUID-VkSubpassDependency-srcSubpass-00865",
3439 "text": " <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>"
3440 },
3441 {
3442 "vuid": "VUID-VkSubpassDependency-srcSubpass-00867",
3443 "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code> and not all of the stages in <code>srcStageMask</code> and <code>dstStageMask</code> are <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>, the <a href=\"#synchronization-pipeline-stages-order\">logically latest</a> pipeline stage in <code>srcStageMask</code> <strong class=\"purple\">must</strong> be <a href=\"#synchronization-pipeline-stages-order\">logically earlier</a> than or equal to the <a href=\"#synchronization-pipeline-stages-order\">logically earliest</a> pipeline stage in <code>dstStageMask</code>"
3444 },
3445 {
3446 "vuid": "VUID-VkSubpassDependency-srcAccessMask-00868",
3447 "text": " Any access flag included in <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
3448 },
3449 {
3450 "vuid": "VUID-VkSubpassDependency-dstAccessMask-00869",
3451 "text": " Any access flag included in <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
3452 },
3453 {
3454 "vuid": "VUID-VkSubpassDependency-srcSubpass-02243",
3455 "text": " If <code>srcSubpass</code> equals <code>dstSubpass</code>, and <code>srcStageMask</code> and <code>dstStageMask</code> both include a <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stage</a>, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_BY_REGION_BIT</code>"
3456 },
3457 {
3458 "vuid": "VUID-VkSubpassDependency-srcStageMask-parameter",
3459 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3460 },
3461 {
3462 "vuid": "VUID-VkSubpassDependency-srcStageMask-requiredbitmask",
3463 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3464 },
3465 {
3466 "vuid": "VUID-VkSubpassDependency-dstStageMask-parameter",
3467 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3468 },
3469 {
3470 "vuid": "VUID-VkSubpassDependency-dstStageMask-requiredbitmask",
3471 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3472 },
3473 {
3474 "vuid": "VUID-VkSubpassDependency-srcAccessMask-parameter",
3475 "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
3476 },
3477 {
3478 "vuid": "VUID-VkSubpassDependency-dstAccessMask-parameter",
3479 "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
3480 },
3481 {
3482 "vuid": "VUID-VkSubpassDependency-dependencyFlags-parameter",
3483 "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
3484 }
3485 ],
3486 "(VK_VERSION_1_1,VK_KHR_multiview)": [
3487 {
3488 "vuid": "VUID-VkSubpassDependency-dependencyFlags-02520",
3489 "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>"
3490 },
3491 {
3492 "vuid": "VUID-VkSubpassDependency-dependencyFlags-02521",
3493 "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>dstSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>"
3494 },
3495 {
3496 "vuid": "VUID-VkSubpassDependency-srcSubpass-00872",
3497 "text": " If <code>srcSubpass</code> equals <code>dstSubpass</code> and that subpass has more than one bit set in the view mask, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
3498 }
3499 ],
3500 "(VK_NV_mesh_shader)": [
3501 {
3502 "vuid": "VUID-VkSubpassDependency-srcStageMask-02099",
3503 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
3504 },
3505 {
3506 "vuid": "VUID-VkSubpassDependency-srcStageMask-02100",
3507 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
3508 },
3509 {
3510 "vuid": "VUID-VkSubpassDependency-dstStageMask-02101",
3511 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
3512 },
3513 {
3514 "vuid": "VUID-VkSubpassDependency-dstStageMask-02102",
3515 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
3516 }
3517 ]
3518 },
3519 "vkCreateRenderPass2KHR": {
3520 "(VK_KHR_create_renderpass2)": [
3521 {
3522 "vuid": "VUID-vkCreateRenderPass2KHR-device-parameter",
3523 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
3524 },
3525 {
3526 "vuid": "VUID-vkCreateRenderPass2KHR-pCreateInfo-parameter",
3527 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassCreateInfo2KHR</code> structure"
3528 },
3529 {
3530 "vuid": "VUID-vkCreateRenderPass2KHR-pAllocator-parameter",
3531 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
3532 },
3533 {
3534 "vuid": "VUID-vkCreateRenderPass2KHR-pRenderPass-parameter",
3535 "text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkRenderPass</code> handle"
3536 }
3537 ]
3538 },
3539 "VkRenderPassCreateInfo2KHR": {
3540 "(VK_KHR_create_renderpass2)": [
3541 {
3542 "vuid": "VUID-VkRenderPassCreateInfo2KHR-None-03049",
3543 "text": " If any two subpasses operate on attachments with overlapping ranges of the same <code>VkDeviceMemory</code> object, and at least one subpass writes to that area of <code>VkDeviceMemory</code>, a subpass dependency <strong class=\"purple\">must</strong> be included (either directly or via some intermediate subpasses) between them"
3544 },
3545 {
3546 "vuid": "VUID-VkRenderPassCreateInfo2KHR-attachment-03050",
3547 "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or the attachment indexed by any element of <code>pPreserveAttachments</code> in any given element of <code>pSubpasses</code> is bound to a range of a <code>VkDeviceMemory</code> object that overlaps with any other attachment in any subpass (including the same subpass), the <code>VkAttachmentDescription2KHR</code> structures describing them <strong class=\"purple\">must</strong> include <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> in <code>flags</code>"
3548 },
3549 {
3550 "vuid": "VUID-VkRenderPassCreateInfo2KHR-attachment-03051",
3551 "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or any element of <code>pPreserveAttachments</code> in any given element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, it <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>"
3552 },
3553 {
3554 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-02522",
3555 "text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>"
3556 },
3557 {
3558 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-02523",
3559 "text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>."
3560 },
3561 {
3562 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-03054",
3563 "text": " For any element of <code>pDependencies</code>, if the <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>srcStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass"
3564 },
3565 {
3566 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-03055",
3567 "text": " For any element of <code>pDependencies</code>, if the <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>dstStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the destination subpass"
3568 },
3569 {
3570 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pCorrelatedViewMasks-03056",
3571 "text": " The set of bits included in any element of <code>pCorrelatedViewMasks</code> <strong class=\"purple\">must</strong> not overlap with the set of bits included in any other element of <code>pCorrelatedViewMasks</code>"
3572 },
3573 {
3574 "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-03057",
3575 "text": " If the <a href=\"#VkSubpassDescription2KHR\">VkSubpassDescription2KHR</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> is <code>0</code>, <code>correlatedViewMaskCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
3576 },
3577 {
3578 "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-03058",
3579 "text": " The <a href=\"#VkSubpassDescription2KHR\">VkSubpassDescription2KHR</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> <strong class=\"purple\">must</strong> either all be <code>0</code>, or all not be <code>0</code>"
3580 },
3581 {
3582 "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-03059",
3583 "text": " If the <a href=\"#VkSubpassDescription2KHR\">VkSubpassDescription2KHR</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> is <code>0</code>, the <code>dependencyFlags</code> member of any element of <code>pDependencies</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
3584 },
3585 {
3586 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-03060",
3587 "text": " For any element of <code>pDependencies</code> where its <code>srcSubpass</code> member equals its <code>dstSubpass</code> member, if the <code>viewMask</code> member of the corresponding element of <code>pSubpasses</code> includes more than one bit, its <code>dependencyFlags</code> member <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
3588 },
3589 {
3590 "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-02524",
3591 "text": " The <code>viewMask</code> member <strong class=\"purple\">must</strong> not have a bit set at an index greater than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxFramebufferLayers</code>"
3592 },
3593 {
3594 "vuid": "VUID-VkRenderPassCreateInfo2KHR-attachment-02525",
3595 "text": " If the <code>attachment</code> member of any element of the <code>pInputAttachments</code> member of any element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, the <code>aspectMask</code> member of that element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> only include aspects that are present in images of the format specified by the element of <code>pAttachments</code> specified by <code>attachment</code>"
3596 },
3597 {
3598 "vuid": "VUID-VkRenderPassCreateInfo2KHR-srcSubpass-02526",
3599 "text": " The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
3600 },
3601 {
3602 "vuid": "VUID-VkRenderPassCreateInfo2KHR-dstSubpass-02527",
3603 "text": " The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
3604 },
3605 {
3606 "vuid": "VUID-VkRenderPassCreateInfo2KHR-sType-sType",
3607 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR</code>"
3608 },
3609 {
3610 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pNext-pNext",
3611 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
3612 },
3613 {
3614 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-parameter",
3615 "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkAttachmentDescription2KHR</code> structures"
3616 },
3617 {
3618 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pSubpasses-parameter",
3619 "text": " <code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <code>VkSubpassDescription2KHR</code> structures"
3620 },
3621 {
3622 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-parameter",
3623 "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pDependencies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> valid <code>VkSubpassDependency2KHR</code> structures"
3624 },
3625 {
3626 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pCorrelatedViewMasks-parameter",
3627 "text": " If <code>correlatedViewMaskCount</code> is not <code>0</code>, <code>pCorrelatedViewMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>correlatedViewMaskCount</code> <code>uint32_t</code> values"
3628 },
3629 {
3630 "vuid": "VUID-VkRenderPassCreateInfo2KHR-subpassCount-arraylength",
3631 "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
3632 }
3633 ]
3634 },
3635 "VkAttachmentDescription2KHR": {
3636 "(VK_KHR_create_renderpass2)": [
3637 {
3638 "vuid": "VUID-VkAttachmentDescription2KHR-finalLayout-03061",
3639 "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
3640 },
3641 {
3642 "vuid": "VUID-VkAttachmentDescription2KHR-sType-sType",
3643 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR</code>"
3644 },
3645 {
3646 "vuid": "VUID-VkAttachmentDescription2KHR-flags-parameter",
3647 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values"
3648 },
3649 {
3650 "vuid": "VUID-VkAttachmentDescription2KHR-format-parameter",
3651 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
3652 },
3653 {
3654 "vuid": "VUID-VkAttachmentDescription2KHR-samples-parameter",
3655 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
3656 },
3657 {
3658 "vuid": "VUID-VkAttachmentDescription2KHR-loadOp-parameter",
3659 "text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
3660 },
3661 {
3662 "vuid": "VUID-VkAttachmentDescription2KHR-storeOp-parameter",
3663 "text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
3664 },
3665 {
3666 "vuid": "VUID-VkAttachmentDescription2KHR-stencilLoadOp-parameter",
3667 "text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
3668 },
3669 {
3670 "vuid": "VUID-VkAttachmentDescription2KHR-stencilStoreOp-parameter",
3671 "text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
3672 },
3673 {
3674 "vuid": "VUID-VkAttachmentDescription2KHR-initialLayout-parameter",
3675 "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3676 },
3677 {
3678 "vuid": "VUID-VkAttachmentDescription2KHR-finalLayout-parameter",
3679 "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3680 }
3681 ]
3682 },
3683 "VkSubpassDescription2KHR": {
3684 "(VK_KHR_create_renderpass2)": [
3685 {
3686 "vuid": "VUID-VkSubpassDescription2KHR-pipelineBindPoint-03062",
3687 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
3688 },
3689 {
3690 "vuid": "VUID-VkSubpassDescription2KHR-colorAttachmentCount-03063",
3691 "text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>"
3692 },
3693 {
3694 "vuid": "VUID-VkSubpassDescription2KHR-loadOp-03064",
3695 "text": " If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then <code>loadOp</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>"
3696 },
3697 {
3698 "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03065",
3699 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that does not have the value <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have the value <code>VK_ATTACHMENT_UNUSED</code>"
3700 },
3701 {
3702 "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03066",
3703 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
3704 },
3705 {
3706 "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03067",
3707 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
3708 },
3709 {
3710 "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03068",
3711 "text": " Any given element of <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkFormat\">VkFormat</a> as its corresponding color attachment"
3712 },
3713 {
3714 "vuid": "VUID-VkSubpassDescription2KHR-pColorAttachments-03069",
3715 "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same sample count"
3716 },
3717 {
3718 "vuid": "VUID-VkSubpassDescription2KHR-pDepthStencilAttachment-03071",
3719 "text": " If neither the <code>VK_AMD_mixed_attachment_samples</code> nor the <code>VK_NV_framebuffer_mixed_samples</code> extensions are enabled, and if <code>pDepthStencilAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code> and any attachments in <code>pColorAttachments</code> are not <code>VK_ATTACHMENT_UNUSED</code>, they <strong class=\"purple\">must</strong> have the same sample count"
3720 },
3721 {
3722 "vuid": "VUID-VkSubpassDescription2KHR-attachment-03073",
3723 "text": " The <code>attachment</code> member of any element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>"
3724 },
3725 {
3726 "vuid": "VUID-VkSubpassDescription2KHR-pPreserveAttachments-03074",
3727 "text": " Any given element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not also be an element of any other member of the subpass description"
3728 },
3729 {
3730 "vuid": "VUID-VkSubpassDescription2KHR-layout-02528",
3731 "text": " If any attachment is used by more than one <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> member, then each use <strong class=\"purple\">must</strong> use the same <code>layout</code>"
3732 },
3733 {
3734 "vuid": "VUID-VkSubpassDescription2KHR-aspectMask-03175",
3735 "text": " The <code>aspectMask</code> member of any element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a>"
3736 },
3737 {
3738 "vuid": "VUID-VkSubpassDescription2KHR-aspectMask-03176",
3739 "text": " The <code>aspectMask</code> member of any element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3740 },
3741 {
3742 "vuid": "VUID-VkSubpassDescription2KHR-aspectMask-02529",
3743 "text": " The <code>aspectMask</code> member of each element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
3744 },
3745 {
3746 "vuid": "VUID-VkSubpassDescription2KHR-sType-sType",
3747 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR</code>"
3748 },
3749 {
3750 "vuid": "VUID-VkSubpassDescription2KHR-flags-parameter",
3751 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values"
3752 },
3753 {
3754 "vuid": "VUID-VkSubpassDescription2KHR-pipelineBindPoint-parameter",
3755 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
3756 },
3757 {
3758 "vuid": "VUID-VkSubpassDescription2KHR-pInputAttachments-parameter",
3759 "text": " If <code>inputAttachmentCount</code> is not <code>0</code>, <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>inputAttachmentCount</code> valid <code>VkAttachmentReference2KHR</code> structures"
3760 },
3761 {
3762 "vuid": "VUID-VkSubpassDescription2KHR-pColorAttachments-parameter",
3763 "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference2KHR</code> structures"
3764 },
3765 {
3766 "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-parameter",
3767 "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, and <code>pResolveAttachments</code> is not <code>NULL</code>, <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference2KHR</code> structures"
3768 },
3769 {
3770 "vuid": "VUID-VkSubpassDescription2KHR-pDepthStencilAttachment-parameter",
3771 "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAttachmentReference2KHR</code> structure"
3772 },
3773 {
3774 "vuid": "VUID-VkSubpassDescription2KHR-pPreserveAttachments-parameter",
3775 "text": " If <code>preserveAttachmentCount</code> is not <code>0</code>, <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>preserveAttachmentCount</code> <code>uint32_t</code> values"
3776 }
3777 ],
3778 "(VK_KHR_create_renderpass2)+(VK_AMD_mixed_attachment_samples)": [
3779 {
3780 "vuid": "VUID-VkSubpassDescription2KHR-pColorAttachments-03070",
3781 "text": " If the <code>VK_AMD_mixed_attachment_samples</code> extension is enabled, all attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is smaller than or equal to the sample count of <code>pDepthStencilAttachment</code> if it is not <code>VK_ATTACHMENT_UNUSED</code>"
3782 }
3783 ],
3784 "(VK_KHR_create_renderpass2)+(VK_NVX_multiview_per_view_attributes)": [
3785 {
3786 "vuid": "VUID-VkSubpassDescription2KHR-flags-03076",
3787 "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX</code>, it <strong class=\"purple\">must</strong> also include <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX</code>."
3788 }
3789 ]
3790 },
3791 "VkSubpassDescriptionDepthStencilResolveKHR": {
3792 "(VK_KHR_create_renderpass2)+(VK_KHR_depth_stencil_resolve)": [
3793 {
3794 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03177",
3795 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> not have the value <code>VK_ATTACHMENT_UNUSED</code>"
3796 },
3797 {
3798 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03178",
3799 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> not both be <code>VK_RESOLVE_MODE_NONE_KHR</code>"
3800 },
3801 {
3802 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03179",
3803 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
3804 },
3805 {
3806 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03180",
3807 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>pDepthStencilResolveAttachment</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
3808 },
3809 {
3810 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-02651",
3811 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code> then it <strong class=\"purple\">must</strong> have a format whose features contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
3812 },
3813 {
3814 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03181",
3815 "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has a depth component, then the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> have a depth component with the same number of bits and numerical type"
3816 },
3817 {
3818 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03182",
3819 "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has a stencil component, then the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> have a stencil component with the same number of bits and numerical type"
3820 },
3821 {
3822 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-depthResolveMode-03183",
3823 "text": " The value of <code>depthResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>supportedDepthResolveModes</code> or <code>VK_RESOLVE_MODE_NONE_KHR</code>"
3824 },
3825 {
3826 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-stencilResolveMode-03184",
3827 "text": " The value of <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>supportedStencilResolveModes</code> or <code>VK_RESOLVE_MODE_NONE_KHR</code>"
3828 },
3829 {
3830 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03185",
3831 "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has both depth and stencil components, <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolve</code> is <code>VK_FALSE</code>, and <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolveNone</code> is <code>VK_FALSE</code>, then the values of <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be identical"
3832 },
3833 {
3834 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03186",
3835 "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has both depth and stencil components, <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolve</code> is <code>VK_FALSE</code> and <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolveNone</code> is <code>VK_TRUE</code>, then the values of <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be identical or one of them <strong class=\"purple\">must</strong> be <code>VK_RESOLVE_MODE_NONE_KHR</code>"
3836 },
3837 {
3838 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-sType-sType",
3839 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR</code>"
3840 },
3841 {
3842 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-depthResolveMode-parameter",
3843 "text": " <code>depthResolveMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkResolveModeFlagBitsKHR\">VkResolveModeFlagBitsKHR</a> value"
3844 },
3845 {
3846 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-stencilResolveMode-parameter",
3847 "text": " <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkResolveModeFlagBitsKHR\">VkResolveModeFlagBitsKHR</a> value"
3848 },
3849 {
3850 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-parameter",
3851 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code>, <code>pDepthStencilResolveAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAttachmentReference2KHR</code> structure"
3852 }
3853 ]
3854 },
3855 "VkAttachmentReference2KHR": {
3856 "(VK_KHR_create_renderpass2)": [
3857 {
3858 "vuid": "VUID-VkAttachmentReference2KHR-layout-03077",
3859 "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
3860 },
3861 {
3862 "vuid": "VUID-VkAttachmentReference2KHR-sType-sType",
3863 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR</code>"
3864 },
3865 {
3866 "vuid": "VUID-VkAttachmentReference2KHR-layout-parameter",
3867 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
3868 }
3869 ]
3870 },
3871 "VkSubpassDependency2KHR": {
3872 "(VK_KHR_create_renderpass2)": [
3873 {
3874 "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-03080",
3875 "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>"
3876 },
3877 {
3878 "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-03081",
3879 "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>"
3880 },
3881 {
3882 "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-03082",
3883 "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>"
3884 },
3885 {
3886 "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-03083",
3887 "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>"
3888 },
3889 {
3890 "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03084",
3891 "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"
3892 },
3893 {
3894 "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03085",
3895 "text": " <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>"
3896 },
3897 {
3898 "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03087",
3899 "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>"
3900 },
3901 {
3902 "vuid": "VUID-VkSubpassDependency2KHR-srcAccessMask-03088",
3903 "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>"
3904 },
3905 {
3906 "vuid": "VUID-VkSubpassDependency2KHR-dstAccessMask-03089",
3907 "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>"
3908 },
3909 {
3910 "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-03090",
3911 "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>"
3912 },
3913 {
3914 "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-03091",
3915 "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>"
3916 },
3917 {
3918 "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-02245",
3919 "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>"
3920 },
3921 {
3922 "vuid": "VUID-VkSubpassDependency2KHR-viewOffset-02530",
3923 "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>"
3924 },
3925 {
3926 "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-03092",
3927 "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>"
3928 },
3929 {
3930 "vuid": "VUID-VkSubpassDependency2KHR-viewOffset-03093",
3931 "text": " If <code>viewOffset</code> is not <code>0</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>dstSubpass</code>."
3932 },
3933 {
3934 "vuid": "VUID-VkSubpassDependency2KHR-sType-sType",
3935 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR</code>"
3936 },
3937 {
3938 "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-parameter",
3939 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3940 },
3941 {
3942 "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-requiredbitmask",
3943 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3944 },
3945 {
3946 "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-parameter",
3947 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
3948 },
3949 {
3950 "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-requiredbitmask",
3951 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
3952 },
3953 {
3954 "vuid": "VUID-VkSubpassDependency2KHR-srcAccessMask-parameter",
3955 "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
3956 },
3957 {
3958 "vuid": "VUID-VkSubpassDependency2KHR-dstAccessMask-parameter",
3959 "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
3960 },
3961 {
3962 "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-parameter",
3963 "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
3964 }
3965 ],
3966 "(VK_KHR_create_renderpass2)+(VK_NV_mesh_shader)": [
3967 {
3968 "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-02103",
3969 "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>"
3970 },
3971 {
3972 "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-02104",
3973 "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>"
3974 },
3975 {
3976 "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-02105",
3977 "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>"
3978 },
3979 {
3980 "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-02106",
3981 "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>"
3982 }
3983 ]
3984 },
3985 "vkDestroyRenderPass": {
3986 "core": [
3987 {
3988 "vuid": "VUID-vkDestroyRenderPass-renderPass-00873",
3989 "text": " All submitted commands that refer to <code>renderPass</code> <strong class=\"purple\">must</strong> have completed execution"
3990 },
3991 {
3992 "vuid": "VUID-vkDestroyRenderPass-renderPass-00874",
3993 "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"
3994 },
3995 {
3996 "vuid": "VUID-vkDestroyRenderPass-renderPass-00875",
3997 "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>"
3998 },
3999 {
4000 "vuid": "VUID-vkDestroyRenderPass-device-parameter",
4001 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4002 },
4003 {
4004 "vuid": "VUID-vkDestroyRenderPass-renderPass-parameter",
4005 "text": " If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
4006 },
4007 {
4008 "vuid": "VUID-vkDestroyRenderPass-pAllocator-parameter",
4009 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
4010 },
4011 {
4012 "vuid": "VUID-vkDestroyRenderPass-renderPass-parent",
4013 "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>"
4014 }
4015 ]
4016 },
4017 "vkCreateFramebuffer": {
4018 "core": [
4019 {
4020 "vuid": "VUID-vkCreateFramebuffer-pCreateInfo-02777",
4021 "text": " If <code>pCreateInfo</code>&#8594;<code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, and <code>attachmentCount</code> is not <code>0</code>, each element of <code>pCreateInfo</code>&#8594;<code>pAttachments</code> <strong class=\"purple\">must</strong> have been created on <code>device</code>"
4022 },
4023 {
4024 "vuid": "VUID-vkCreateFramebuffer-device-parameter",
4025 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4026 },
4027 {
4028 "vuid": "VUID-vkCreateFramebuffer-pCreateInfo-parameter",
4029 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFramebufferCreateInfo</code> structure"
4030 },
4031 {
4032 "vuid": "VUID-vkCreateFramebuffer-pAllocator-parameter",
4033 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
4034 },
4035 {
4036 "vuid": "VUID-vkCreateFramebuffer-pFramebuffer-parameter",
4037 "text": " <code>pFramebuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFramebuffer</code> handle"
4038 }
4039 ]
4040 },
4041 "VkFramebufferCreateInfo": {
4042 "core": [
4043 {
4044 "vuid": "VUID-VkFramebufferCreateInfo-attachmentCount-00876",
4045 "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be equal to the attachment count specified in <code>renderPass</code>"
4046 },
4047 {
4048 "vuid": "VUID-VkFramebufferCreateInfo-flags-02778",
4049 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, and <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> must be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkImageView\">VkImageView</a> handles"
4050 },
4051 {
4052 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00877",
4053 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</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>"
4054 },
4055 {
4056 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02633",
4057 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</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>"
4058 },
4059 {
4060 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00879",
4061 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</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>"
4062 },
4063 {
4064 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00880",
4065 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with an <a href=\"#VkFormat\">VkFormat</a> value that matches the <a href=\"#VkFormat\">VkFormat</a> specified by the corresponding <code>VkAttachmentDescription</code> in <code>renderPass</code>"
4066 },
4067 {
4068 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00881",
4069 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</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>"
4070 },
4071 {
4072 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00883",
4073 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> only specify a single mip level"
4074 },
4075 {
4076 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00884",
4077 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle"
4078 },
4079 {
4080 "vuid": "VUID-VkFramebufferCreateInfo-width-00885",
4081 "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
4082 },
4083 {
4084 "vuid": "VUID-VkFramebufferCreateInfo-width-00886",
4085 "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>"
4086 },
4087 {
4088 "vuid": "VUID-VkFramebufferCreateInfo-height-00887",
4089 "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
4090 },
4091 {
4092 "vuid": "VUID-VkFramebufferCreateInfo-height-00888",
4093 "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>"
4094 },
4095 {
4096 "vuid": "VUID-VkFramebufferCreateInfo-layers-00889",
4097 "text": " <code>layers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
4098 },
4099 {
4100 "vuid": "VUID-VkFramebufferCreateInfo-layers-00890",
4101 "text": " <code>layers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferLayers</code>"
4102 },
4103 {
4104 "vuid": "VUID-VkFramebufferCreateInfo-flags-03188",
4105 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, and <code>attachmentCount</code> is not 0, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkImageView\">VkImageView</a> handles"
4106 },
4107 {
4108 "vuid": "VUID-VkFramebufferCreateInfo-sType-sType",
4109 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO</code>"
4110 },
4111 {
4112 "vuid": "VUID-VkFramebufferCreateInfo-pNext-pNext",
4113 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a>"
4114 },
4115 {
4116 "vuid": "VUID-VkFramebufferCreateInfo-flags-parameter",
4117 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFramebufferCreateFlagBits\">VkFramebufferCreateFlagBits</a> values"
4118 },
4119 {
4120 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-parameter",
4121 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
4122 },
4123 {
4124 "vuid": "VUID-VkFramebufferCreateInfo-commonparent",
4125 "text": " Both of <code>renderPass</code>, and the elements of <code>pAttachments</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
4126 }
4127 ],
4128 "(VK_KHR_depth_stencil_resolve)": [
4129 {
4130 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02634",
4131 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</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>"
4132 }
4133 ],
4134 "(VK_EXT_fragment_density_map)": [
4135 {
4136 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02552",
4137 "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>."
4138 },
4139 {
4140 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02553",
4141 "text": " If <code>renderPass</code> has a fragment density map attachment and <a href=\"#features-nonsubsampledimages\">non-subsample image feature</a> is not enabled, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with a <code>flags</code> value including <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code> unless that element is the fragment density map attachment."
4142 },
4143 {
4144 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02554",
4145 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have dimensions at least as large as the corresponding framebuffer dimension except for any element that is referenced by <code>fragmentDensityMapAttachment</code>"
4146 },
4147 {
4148 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02555",
4149 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</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 \\(\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\rceil\\)"
4150 },
4151 {
4152 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02556",
4153 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</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 \\(\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\rceil\\)"
4154 }
4155 ],
4156 "!(VK_EXT_fragment_density_map)": [
4157 {
4158 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00882",
4159 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have dimensions at least as large as the corresponding framebuffer dimension"
4160 }
4161 ],
4162 "!(VK_EXT_fragment_density_map)+(VK_VERSION_1_1,VK_KHR_multiview)": [
4163 {
4164 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02743",
4165 "text": " If <code>renderPass</code> was specified with non-zero view masks, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> greater than the index of the most significant bit set in any of those view masks"
4166 }
4167 ],
4168 "(VK_EXT_fragment_density_map)+!(VK_VERSION_1_1,VK_KHR_multiview)": [
4169 {
4170 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02744",
4171 "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>"
4172 }
4173 ],
4174 "(VK_EXT_fragment_density_map)+(VK_VERSION_1_1,VK_KHR_multiview)": [
4175 {
4176 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02745",
4177 "text": " If <code>renderPass</code> was specified with non-zero view masks, each element of <code>pAttachments</code> that is not referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> greater than the index of the most significant bit set in any of those view masks"
4178 },
4179 {
4180 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02746",
4181 "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"
4182 },
4183 {
4184 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02747",
4185 "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>"
4186 }
4187 ],
4188 "(VK_VERSION_1_1,VK_KHR_multiview)": [
4189 {
4190 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02531",
4191 "text": " If <code>renderPass</code> was specified with non-zero view masks, <code>layers</code> <strong class=\"purple\">must</strong> be <code>1</code>"
4192 }
4193 ],
4194 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
4195 {
4196 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00891",
4197 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</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"
4198 }
4199 ],
4200 "(VK_KHR_imageless_framebuffer)": [
4201 {
4202 "vuid": "VUID-VkFramebufferCreateInfo-flags-03189",
4203 "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_KHR</code>"
4204 },
4205 {
4206 "vuid": "VUID-VkFramebufferCreateInfo-flags-03190",
4207 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a>"
4208 },
4209 {
4210 "vuid": "VUID-VkFramebufferCreateInfo-flags-03191",
4211 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</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>"
4212 },
4213 {
4214 "vuid": "VUID-VkFramebufferCreateInfo-flags-03201",
4215 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, the <code>usage</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 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>"
4216 },
4217 {
4218 "vuid": "VUID-VkFramebufferCreateInfo-flags-03202",
4219 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, the <code>usage</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 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>"
4220 },
4221 {
4222 "vuid": "VUID-VkFramebufferCreateInfo-flags-03204",
4223 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, the <code>usage</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 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>"
4224 },
4225 {
4226 "vuid": "VUID-VkFramebufferCreateInfo-flags-03205",
4227 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, at least one element of the <code>pViewFormats</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 <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>"
4228 }
4229 ],
4230 "(VK_KHR_imageless_framebuffer)+!(VK_EXT_fragment_density_map)": [
4231 {
4232 "vuid": "VUID-VkFramebufferCreateInfo-flags-03192",
4233 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</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 <strong class=\"purple\">must</strong> be greater than or equal to <code>width</code>"
4234 },
4235 {
4236 "vuid": "VUID-VkFramebufferCreateInfo-flags-03193",
4237 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</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 <strong class=\"purple\">must</strong> be greater than or equal to <code>height</code>"
4238 }
4239 ],
4240 "(VK_KHR_imageless_framebuffer)+(VK_EXT_fragment_density_map)": [
4241 {
4242 "vuid": "VUID-VkFramebufferCreateInfo-flags-03194",
4243 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</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 <strong class=\"purple\">must</strong> be greater than or equal to <code>width</code>, except for any element that is referenced by <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>::<code>fragmentDensityMapAttachment</code> in <code>renderPass</code>"
4244 },
4245 {
4246 "vuid": "VUID-VkFramebufferCreateInfo-flags-03195",
4247 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</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 <strong class=\"purple\">must</strong> be greater than or equal to <code>height</code>, except for any element that is referenced by <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>::<code>fragmentDensityMapAttachment</code> in <code>renderPass</code>"
4248 },
4249 {
4250 "vuid": "VUID-VkFramebufferCreateInfo-flags-03196",
4251 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</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 \\(\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\rceil\\)"
4252 },
4253 {
4254 "vuid": "VUID-VkFramebufferCreateInfo-flags-03197",
4255 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</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 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 \\(\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\rceil\\)"
4256 }
4257 ],
4258 "(VK_KHR_imageless_framebuffer)+(VK_VERSION_1_1,VK_KHR_multiview)": [
4259 {
4260 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-03198",
4261 "text": " If multiview is enabled for <code>renderPass</code>, and <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, the <code>layerCount</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 <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>"
4262 },
4263 {
4264 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-03199",
4265 "text": " If multiview is not enabled for <code>renderPass</code>, and <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, the <code>layerCount</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 <strong class=\"purple\">must</strong> be greater than or equal to <code>layers</code>"
4266 }
4267 ],
4268 "(VK_KHR_imageless_framebuffer)+!(VK_VERSION_1_1+VK_KHR_multiview)": [
4269 {
4270 "vuid": "VUID-VkFramebufferCreateInfo-flags-03200",
4271 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, the <code>layerCount</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 <strong class=\"purple\">must</strong> be greater than or equal to <code>layers</code>"
4272 }
4273 ],
4274 "(VK_KHR_imageless_framebuffer)+(VK_KHR_depth_stencil_resolve)": [
4275 {
4276 "vuid": "VUID-VkFramebufferCreateInfo-flags-03203",
4277 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, the <code>usage</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 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>"
4278 }
4279 ]
4280 },
4281 "VkFramebufferAttachmentsCreateInfoKHR": {
4282 "(VK_KHR_imageless_framebuffer)": [
4283 {
4284 "vuid": "VUID-VkFramebufferAttachmentsCreateInfoKHR-sType-sType",
4285 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR</code>"
4286 },
4287 {
4288 "vuid": "VUID-VkFramebufferAttachmentsCreateInfoKHR-pAttachmentImageInfos-parameter",
4289 "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 <code>VkFramebufferAttachmentImageInfoKHR</code> structures"
4290 }
4291 ]
4292 },
4293 "VkFramebufferAttachmentImageInfoKHR": {
4294 "(VK_KHR_imageless_framebuffer)": [
4295 {
4296 "vuid": "VUID-VkFramebufferAttachmentImageInfoKHR-sType-sType",
4297 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR</code>"
4298 },
4299 {
4300 "vuid": "VUID-VkFramebufferAttachmentImageInfoKHR-pNext-pNext",
4301 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
4302 },
4303 {
4304 "vuid": "VUID-VkFramebufferAttachmentImageInfoKHR-flags-parameter",
4305 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
4306 },
4307 {
4308 "vuid": "VUID-VkFramebufferAttachmentImageInfoKHR-usage-parameter",
4309 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
4310 },
4311 {
4312 "vuid": "VUID-VkFramebufferAttachmentImageInfoKHR-usage-requiredbitmask",
4313 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
4314 },
4315 {
4316 "vuid": "VUID-VkFramebufferAttachmentImageInfoKHR-pViewFormats-parameter",
4317 "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"
4318 }
4319 ]
4320 },
4321 "vkDestroyFramebuffer": {
4322 "core": [
4323 {
4324 "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00892",
4325 "text": " All submitted commands that refer to <code>framebuffer</code> <strong class=\"purple\">must</strong> have completed execution"
4326 },
4327 {
4328 "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00893",
4329 "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"
4330 },
4331 {
4332 "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00894",
4333 "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>"
4334 },
4335 {
4336 "vuid": "VUID-vkDestroyFramebuffer-device-parameter",
4337 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4338 },
4339 {
4340 "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parameter",
4341 "text": " If <code>framebuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkFramebuffer</code> handle"
4342 },
4343 {
4344 "vuid": "VUID-vkDestroyFramebuffer-pAllocator-parameter",
4345 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
4346 },
4347 {
4348 "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parent",
4349 "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>"
4350 }
4351 ]
4352 },
4353 "vkCmdBeginRenderPass": {
4354 "core": [
4355 {
4356 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00895",
4357 "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>"
4358 },
4359 {
4360 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00897",
4361 "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>"
4362 },
4363 {
4364 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00898",
4365 "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>"
4366 },
4367 {
4368 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00899",
4369 "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>"
4370 },
4371 {
4372 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00900",
4373 "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>"
4374 },
4375 {
4376 "vuid": "VUID-vkCmdBeginRenderPass-srcStageMask-00901",
4377 "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"
4378 },
4379 {
4380 "vuid": "VUID-vkCmdBeginRenderPass-framebuffer-02532",
4381 "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"
4382 },
4383 {
4384 "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-parameter",
4385 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
4386 },
4387 {
4388 "vuid": "VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter",
4389 "text": " <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassBeginInfo</code> structure"
4390 },
4391 {
4392 "vuid": "VUID-vkCmdBeginRenderPass-contents-parameter",
4393 "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
4394 },
4395 {
4396 "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-recording",
4397 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
4398 },
4399 {
4400 "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-cmdpool",
4401 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
4402 },
4403 {
4404 "vuid": "VUID-vkCmdBeginRenderPass-renderpass",
4405 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
4406 },
4407 {
4408 "vuid": "VUID-vkCmdBeginRenderPass-bufferlevel",
4409 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
4410 }
4411 ],
4412 "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [
4413 {
4414 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00896",
4415 "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>"
4416 }
4417 ],
4418 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
4419 {
4420 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-01758",
4421 "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>"
4422 }
4423 ]
4424 },
4425 "vkCmdBeginRenderPass2KHR": {
4426 "(VK_KHR_create_renderpass2)": [
4427 {
4428 "vuid": "VUID-vkCmdBeginRenderPass2KHR-framebuffer-02779",
4429 "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"
4430 },
4431 {
4432 "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03094",
4433 "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>"
4434 },
4435 {
4436 "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03096",
4437 "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>"
4438 },
4439 {
4440 "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03097",
4441 "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>"
4442 },
4443 {
4444 "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03098",
4445 "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>"
4446 },
4447 {
4448 "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03099",
4449 "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>"
4450 },
4451 {
4452 "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03100",
4453 "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>"
4454 },
4455 {
4456 "vuid": "VUID-vkCmdBeginRenderPass2KHR-srcStageMask-03101",
4457 "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"
4458 },
4459 {
4460 "vuid": "VUID-vkCmdBeginRenderPass2KHR-framebuffer-02533",
4461 "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"
4462 },
4463 {
4464 "vuid": "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-parameter",
4465 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
4466 },
4467 {
4468 "vuid": "VUID-vkCmdBeginRenderPass2KHR-pRenderPassBegin-parameter",
4469 "text": " <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassBeginInfo</code> structure"
4470 },
4471 {
4472 "vuid": "VUID-vkCmdBeginRenderPass2KHR-pSubpassBeginInfo-parameter",
4473 "text": " <code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassBeginInfoKHR</code> structure"
4474 },
4475 {
4476 "vuid": "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-recording",
4477 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
4478 },
4479 {
4480 "vuid": "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-cmdpool",
4481 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
4482 },
4483 {
4484 "vuid": "VUID-vkCmdBeginRenderPass2KHR-renderpass",
4485 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
4486 },
4487 {
4488 "vuid": "VUID-vkCmdBeginRenderPass2KHR-bufferlevel",
4489 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
4490 }
4491 ]
4492 },
4493 "VkRenderPassBeginInfo": {
4494 "core": [
4495 {
4496 "vuid": "VUID-VkRenderPassBeginInfo-clearValueCount-00902",
4497 "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>"
4498 },
4499 {
4500 "vuid": "VUID-VkRenderPassBeginInfo-renderPass-00904",
4501 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkFramebufferCreateInfo</code> structure specified when creating <code>framebuffer</code>."
4502 },
4503 {
4504 "vuid": "VUID-VkRenderPassBeginInfo-sType-sType",
4505 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO</code>"
4506 },
4507 {
4508 "vuid": "VUID-VkRenderPassBeginInfo-pNext-pNext",
4509 "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=\"#VkRenderPassAttachmentBeginInfoKHR\">VkRenderPassAttachmentBeginInfoKHR</a>, or <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a>"
4510 },
4511 {
4512 "vuid": "VUID-VkRenderPassBeginInfo-sType-unique",
4513 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
4514 },
4515 {
4516 "vuid": "VUID-VkRenderPassBeginInfo-renderPass-parameter",
4517 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
4518 },
4519 {
4520 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-parameter",
4521 "text": " <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkFramebuffer</code> handle"
4522 },
4523 {
4524 "vuid": "VUID-VkRenderPassBeginInfo-pClearValues-parameter",
4525 "text": " If <code>clearValueCount</code> is not <code>0</code>, <code>pClearValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>clearValueCount</code> <code>VkClearValue</code> unions"
4526 },
4527 {
4528 "vuid": "VUID-VkRenderPassBeginInfo-commonparent",
4529 "text": " Both of <code>framebuffer</code>, and <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
4530 }
4531 ],
4532 "(VK_KHR_imageless_framebuffer)": [
4533 {
4534 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03207",
4535 "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_KHR</code>, and the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassAttachmentBeginInfoKHR\">VkRenderPassAttachmentBeginInfoKHR</a>, its <code>attachmentCount</code> <strong class=\"purple\">must</strong> be zero"
4536 },
4537 {
4538 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03208",
4539 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, the <code>attachmentCount</code> of an instance of <a href=\"#VkRenderPassAttachmentBeginInfoKHR\">VkRenderPassAttachmentBeginInfoKHR</a> included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be equal to the value of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a>::<code>attachmentImageInfoCount</code> used to create <code>framebuffer</code>"
4540 },
4541 {
4542 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-02780",
4543 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of the <code>pAttachments</code> member of an instance of <a href=\"#VkRenderPassAttachmentBeginInfoKHR\">VkRenderPassAttachmentBeginInfoKHR</a> 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>"
4544 },
4545 {
4546 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03209",
4547 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of the <code>pAttachments</code> member of an instance of <a href=\"#VkRenderPassAttachmentBeginInfoKHR\">VkRenderPassAttachmentBeginInfoKHR</a> included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> equal to the <code>flags</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a>::<code>pAttachments</code> used to create <code>framebuffer</code>"
4548 },
4549 {
4550 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03210",
4551 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of the <code>pAttachments</code> member of an instance of <a href=\"#VkRenderPassAttachmentBeginInfoKHR\">VkRenderPassAttachmentBeginInfoKHR</a> 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=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a>::<code>pAttachments</code> used to create <code>framebuffer</code>"
4552 },
4553 {
4554 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03211",
4555 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of the <code>pAttachments</code> member of an instance of <a href=\"#VkRenderPassAttachmentBeginInfoKHR\">VkRenderPassAttachmentBeginInfoKHR</a> 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=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a>::<code>pAttachments</code> used to create <code>framebuffer</code>"
4556 },
4557 {
4558 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03212",
4559 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of the <code>pAttachments</code> member of an instance of <a href=\"#VkRenderPassAttachmentBeginInfoKHR\">VkRenderPassAttachmentBeginInfoKHR</a> 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=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a>::<code>pAttachments</code> used to create <code>framebuffer</code>"
4560 },
4561 {
4562 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03213",
4563 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of the <code>pAttachments</code> member of an instance of <a href=\"#VkRenderPassAttachmentBeginInfoKHR\">VkRenderPassAttachmentBeginInfoKHR</a> 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.pname</code>:layerCount equal to the <code>layerCount</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a>::<code>pAttachments</code> used to create <code>framebuffer</code>"
4564 },
4565 {
4566 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03214",
4567 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of the <code>pAttachments</code> member of an instance of <a href=\"#VkRenderPassAttachmentBeginInfoKHR\">VkRenderPassAttachmentBeginInfoKHR</a> 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=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a>::<code>viewFormatCount</code> equal to the <code>viewFormatCount</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a>::<code>pAttachments</code> used to create <code>framebuffer</code>"
4568 },
4569 {
4570 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03215",
4571 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of the <code>pAttachments</code> member of an instance of <a href=\"#VkRenderPassAttachmentBeginInfoKHR\">VkRenderPassAttachmentBeginInfoKHR</a> 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=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a>::<code>pViewFormats</code> equal to the set of elements in the <code>pViewFormats</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a>::<code>pAttachments</code> used to create <code>framebuffer</code>"
4572 },
4573 {
4574 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03216",
4575 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of the <code>pAttachments</code> member of an instance of <a href=\"#VkRenderPassAttachmentBeginInfoKHR\">VkRenderPassAttachmentBeginInfoKHR</a> 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>"
4576 },
4577 {
4578 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03217",
4579 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR</code>, each element of the <code>pAttachments</code> member of an instance of <a href=\"#VkRenderPassAttachmentBeginInfoKHR\">VkRenderPassAttachmentBeginInfoKHR</a> 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>"
4580 }
4581 ]
4582 },
4583 "VkRenderPassSampleLocationsBeginInfoEXT": {
4584 "(VK_EXT_sample_locations)": [
4585 {
4586 "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-sType-sType",
4587 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT</code>"
4588 },
4589 {
4590 "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pAttachmentInitialSampleLocations-parameter",
4591 "text": " If <code>attachmentInitialSampleLocationsCount</code> is not <code>0</code>, <code>pAttachmentInitialSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentInitialSampleLocationsCount</code> valid <code>VkAttachmentSampleLocationsEXT</code> structures"
4592 },
4593 {
4594 "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pPostSubpassSampleLocations-parameter",
4595 "text": " If <code>postSubpassSampleLocationsCount</code> is not <code>0</code>, <code>pPostSubpassSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>postSubpassSampleLocationsCount</code> valid <code>VkSubpassSampleLocationsEXT</code> structures"
4596 }
4597 ]
4598 },
4599 "VkAttachmentSampleLocationsEXT": {
4600 "(VK_EXT_sample_locations)": [
4601 {
4602 "vuid": "VUID-VkAttachmentSampleLocationsEXT-attachmentIndex-01531",
4603 "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"
4604 },
4605 {
4606 "vuid": "VUID-VkAttachmentSampleLocationsEXT-sampleLocationsInfo-parameter",
4607 "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampleLocationsInfoEXT</code> structure"
4608 }
4609 ]
4610 },
4611 "VkSubpassSampleLocationsEXT": {
4612 "(VK_EXT_sample_locations)": [
4613 {
4614 "vuid": "VUID-VkSubpassSampleLocationsEXT-subpassIndex-01532",
4615 "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"
4616 },
4617 {
4618 "vuid": "VUID-VkSubpassSampleLocationsEXT-sampleLocationsInfo-parameter",
4619 "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampleLocationsInfoEXT</code> structure"
4620 }
4621 ]
4622 },
4623 "VkSubpassBeginInfoKHR": {
4624 "(VK_KHR_create_renderpass2)": [
4625 {
4626 "vuid": "VUID-VkSubpassBeginInfoKHR-sType-sType",
4627 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR</code>"
4628 },
4629 {
4630 "vuid": "VUID-VkSubpassBeginInfoKHR-pNext-pNext",
4631 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
4632 },
4633 {
4634 "vuid": "VUID-VkSubpassBeginInfoKHR-contents-parameter",
4635 "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
4636 }
4637 ]
4638 },
4639 "VkDeviceGroupRenderPassBeginInfo": {
4640 "(VK_VERSION_1_1,VK_KHR_device_group)": [
4641 {
4642 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00905",
4643 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
4644 },
4645 {
4646 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00906",
4647 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
4648 },
4649 {
4650 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00907",
4651 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a subset of the command buffer&#8217;s initial device mask"
4652 },
4653 {
4654 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceRenderAreaCount-00908",
4655 "text": " <code>deviceRenderAreaCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device."
4656 },
4657 {
4658 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-sType-sType",
4659 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO</code>"
4660 },
4661 {
4662 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-pDeviceRenderAreas-parameter",
4663 "text": " If <code>deviceRenderAreaCount</code> is not <code>0</code>, <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceRenderAreaCount</code> <code>VkRect2D</code> structures"
4664 }
4665 ]
4666 },
4667 "VkRenderPassAttachmentBeginInfoKHR": {
4668 "(VK_KHR_imageless_framebuffer)": [
4669 {
4670 "vuid": "VUID-VkRenderPassAttachmentBeginInfoKHR-pAttachments-03218",
4671 "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> only specify a single mip level"
4672 },
4673 {
4674 "vuid": "VUID-VkRenderPassAttachmentBeginInfoKHR-pAttachments-03219",
4675 "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle"
4676 },
4677 {
4678 "vuid": "VUID-VkRenderPassAttachmentBeginInfoKHR-sType-sType",
4679 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR</code>"
4680 },
4681 {
4682 "vuid": "VUID-VkRenderPassAttachmentBeginInfoKHR-pAttachments-parameter",
4683 "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkImageView</code> handles"
4684 }
4685 ]
4686 },
4687 "vkGetRenderAreaGranularity": {
4688 "core": [
4689 {
4690 "vuid": "VUID-vkGetRenderAreaGranularity-device-parameter",
4691 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4692 },
4693 {
4694 "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parameter",
4695 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
4696 },
4697 {
4698 "vuid": "VUID-vkGetRenderAreaGranularity-pGranularity-parameter",
4699 "text": " <code>pGranularity</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExtent2D</code> structure"
4700 },
4701 {
4702 "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parent",
4703 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
4704 }
4705 ]
4706 },
4707 "vkCmdNextSubpass": {
4708 "core": [
4709 {
4710 "vuid": "VUID-vkCmdNextSubpass-None-00909",
4711 "text": " The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one"
4712 },
4713 {
4714 "vuid": "VUID-vkCmdNextSubpass-commandBuffer-parameter",
4715 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
4716 },
4717 {
4718 "vuid": "VUID-vkCmdNextSubpass-contents-parameter",
4719 "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
4720 },
4721 {
4722 "vuid": "VUID-vkCmdNextSubpass-commandBuffer-recording",
4723 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
4724 },
4725 {
4726 "vuid": "VUID-vkCmdNextSubpass-commandBuffer-cmdpool",
4727 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
4728 },
4729 {
4730 "vuid": "VUID-vkCmdNextSubpass-renderpass",
4731 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
4732 },
4733 {
4734 "vuid": "VUID-vkCmdNextSubpass-bufferlevel",
4735 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
4736 }
4737 ],
4738 "(VK_EXT_transform_feedback)": [
4739 {
4740 "vuid": "VUID-vkCmdNextSubpass-None-02349",
4741 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
4742 }
4743 ]
4744 },
4745 "vkCmdNextSubpass2KHR": {
4746 "(VK_KHR_create_renderpass2)": [
4747 {
4748 "vuid": "VUID-vkCmdNextSubpass2KHR-None-03102",
4749 "text": " The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one"
4750 },
4751 {
4752 "vuid": "VUID-vkCmdNextSubpass2KHR-commandBuffer-parameter",
4753 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
4754 },
4755 {
4756 "vuid": "VUID-vkCmdNextSubpass2KHR-pSubpassBeginInfo-parameter",
4757 "text": " <code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassBeginInfoKHR</code> structure"
4758 },
4759 {
4760 "vuid": "VUID-vkCmdNextSubpass2KHR-pSubpassEndInfo-parameter",
4761 "text": " <code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassEndInfoKHR</code> structure"
4762 },
4763 {
4764 "vuid": "VUID-vkCmdNextSubpass2KHR-commandBuffer-recording",
4765 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
4766 },
4767 {
4768 "vuid": "VUID-vkCmdNextSubpass2KHR-commandBuffer-cmdpool",
4769 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
4770 },
4771 {
4772 "vuid": "VUID-vkCmdNextSubpass2KHR-renderpass",
4773 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
4774 },
4775 {
4776 "vuid": "VUID-vkCmdNextSubpass2KHR-bufferlevel",
4777 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
4778 }
4779 ],
4780 "(VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [
4781 {
4782 "vuid": "VUID-vkCmdNextSubpass2KHR-None-02350",
4783 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
4784 }
4785 ]
4786 },
4787 "vkCmdEndRenderPass": {
4788 "core": [
4789 {
4790 "vuid": "VUID-vkCmdEndRenderPass-None-00910",
4791 "text": " The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one"
4792 },
4793 {
4794 "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-parameter",
4795 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
4796 },
4797 {
4798 "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-recording",
4799 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
4800 },
4801 {
4802 "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-cmdpool",
4803 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
4804 },
4805 {
4806 "vuid": "VUID-vkCmdEndRenderPass-renderpass",
4807 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
4808 },
4809 {
4810 "vuid": "VUID-vkCmdEndRenderPass-bufferlevel",
4811 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
4812 }
4813 ],
4814 "(VK_EXT_transform_feedback)": [
4815 {
4816 "vuid": "VUID-vkCmdEndRenderPass-None-02351",
4817 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
4818 }
4819 ]
4820 },
4821 "vkCmdEndRenderPass2KHR": {
4822 "(VK_KHR_create_renderpass2)": [
4823 {
4824 "vuid": "VUID-vkCmdEndRenderPass2KHR-None-03103",
4825 "text": " The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one"
4826 },
4827 {
4828 "vuid": "VUID-vkCmdEndRenderPass2KHR-commandBuffer-parameter",
4829 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
4830 },
4831 {
4832 "vuid": "VUID-vkCmdEndRenderPass2KHR-pSubpassEndInfo-parameter",
4833 "text": " <code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassEndInfoKHR</code> structure"
4834 },
4835 {
4836 "vuid": "VUID-vkCmdEndRenderPass2KHR-commandBuffer-recording",
4837 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
4838 },
4839 {
4840 "vuid": "VUID-vkCmdEndRenderPass2KHR-commandBuffer-cmdpool",
4841 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
4842 },
4843 {
4844 "vuid": "VUID-vkCmdEndRenderPass2KHR-renderpass",
4845 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
4846 },
4847 {
4848 "vuid": "VUID-vkCmdEndRenderPass2KHR-bufferlevel",
4849 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
4850 }
4851 ],
4852 "(VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [
4853 {
4854 "vuid": "VUID-vkCmdEndRenderPass2KHR-None-02352",
4855 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
4856 }
4857 ]
4858 },
4859 "VkSubpassEndInfoKHR": {
4860 "(VK_KHR_create_renderpass2)": [
4861 {
4862 "vuid": "VUID-VkSubpassEndInfoKHR-sType-sType",
4863 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR</code>"
4864 },
4865 {
4866 "vuid": "VUID-VkSubpassEndInfoKHR-pNext-pNext",
4867 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
4868 }
4869 ]
4870 },
4871 "vkCreateShaderModule": {
4872 "core": [
4873 {
4874 "vuid": "VUID-vkCreateShaderModule-device-parameter",
4875 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4876 },
4877 {
4878 "vuid": "VUID-vkCreateShaderModule-pCreateInfo-parameter",
4879 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkShaderModuleCreateInfo</code> structure"
4880 },
4881 {
4882 "vuid": "VUID-vkCreateShaderModule-pAllocator-parameter",
4883 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
4884 },
4885 {
4886 "vuid": "VUID-vkCreateShaderModule-pShaderModule-parameter",
4887 "text": " <code>pShaderModule</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkShaderModule</code> handle"
4888 }
4889 ]
4890 },
4891 "VkShaderModuleCreateInfo": {
4892 "core": [
4893 {
4894 "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01085",
4895 "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be greater than 0"
4896 },
4897 {
4898 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01089",
4899 "text": " <code>pCode</code> <strong class=\"purple\">must</strong> declare the <code>Shader</code> capability for SPIR-V code"
4900 },
4901 {
4902 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01090",
4903 "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"
4904 },
4905 {
4906 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01091",
4907 "text": " If <code>pCode</code> declares any of the capabilities listed as <strong class=\"purple\">optional</strong> in the <a href=\"#spirvenv-capabilities-table\">SPIR-V Environment</a> appendix, the corresponding feature(s) <strong class=\"purple\">must</strong> be enabled."
4908 },
4909 {
4910 "vuid": "VUID-VkShaderModuleCreateInfo-sType-sType",
4911 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO</code>"
4912 },
4913 {
4914 "vuid": "VUID-VkShaderModuleCreateInfo-pNext-pNext",
4915 "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>"
4916 },
4917 {
4918 "vuid": "VUID-VkShaderModuleCreateInfo-flags-parameter",
4919 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderModuleCreateFlagBits\">VkShaderModuleCreateFlagBits</a> values"
4920 },
4921 {
4922 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-parameter",
4923 "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"
4924 }
4925 ],
4926 "!(VK_NV_glsl_shader)": [
4927 {
4928 "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01086",
4929 "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4"
4930 },
4931 {
4932 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01087",
4933 "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>"
4934 },
4935 {
4936 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01088",
4937 "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"
4938 }
4939 ],
4940 "(VK_NV_glsl_shader)": [
4941 {
4942 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01376",
4943 "text": " If <code>pCode</code> points to SPIR-V code, <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4"
4944 },
4945 {
4946 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01377",
4947 "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"
4948 },
4949 {
4950 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01378",
4951 "text": " If <code>pCode</code> points to SPIR-V code, that code <strong class=\"purple\">must</strong> adhere to the validation rules described by the <a href=\"#spirvenv-module-validation\">Validation Rules within a Module</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix"
4952 },
4953 {
4954 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01379",
4955 "text": " If <code>pCode</code> points to GLSL code, it <strong class=\"purple\">must</strong> be valid GLSL code written to the <code>GL_KHR_vulkan_glsl</code> GLSL extension specification"
4956 }
4957 ]
4958 },
4959 "VkShaderModuleValidationCacheCreateInfoEXT": {
4960 "(VK_EXT_validation_cache)": [
4961 {
4962 "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-sType-sType",
4963 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT</code>"
4964 },
4965 {
4966 "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-validationCache-parameter",
4967 "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
4968 }
4969 ]
4970 },
4971 "vkDestroyShaderModule": {
4972 "core": [
4973 {
4974 "vuid": "VUID-vkDestroyShaderModule-shaderModule-01092",
4975 "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"
4976 },
4977 {
4978 "vuid": "VUID-vkDestroyShaderModule-shaderModule-01093",
4979 "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>"
4980 },
4981 {
4982 "vuid": "VUID-vkDestroyShaderModule-device-parameter",
4983 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
4984 },
4985 {
4986 "vuid": "VUID-vkDestroyShaderModule-shaderModule-parameter",
4987 "text": " If <code>shaderModule</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>shaderModule</code> <strong class=\"purple\">must</strong> be a valid <code>VkShaderModule</code> handle"
4988 },
4989 {
4990 "vuid": "VUID-vkDestroyShaderModule-pAllocator-parameter",
4991 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
4992 },
4993 {
4994 "vuid": "VUID-vkDestroyShaderModule-shaderModule-parent",
4995 "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>"
4996 }
4997 ]
4998 },
4999 "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV": {
5000 "(VK_NV_cooperative_matrix)": [
5001 {
5002 "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter",
5003 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
5004 },
5005 {
5006 "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pPropertyCount-parameter",
5007 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
5008 },
5009 {
5010 "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pProperties-parameter",
5011 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkCooperativeMatrixPropertiesNV</code> structures"
5012 }
5013 ]
5014 },
5015 "VkCooperativeMatrixPropertiesNV": {
5016 "(VK_NV_cooperative_matrix)": [
5017 {
5018 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-sType-sType",
5019 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>"
5020 },
5021 {
5022 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-pNext-pNext",
5023 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5024 },
5025 {
5026 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-AType-parameter",
5027 "text": " <code>AType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
5028 },
5029 {
5030 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-BType-parameter",
5031 "text": " <code>BType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
5032 },
5033 {
5034 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-CType-parameter",
5035 "text": " <code>CType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
5036 },
5037 {
5038 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-DType-parameter",
5039 "text": " <code>DType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
5040 },
5041 {
5042 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-scope-parameter",
5043 "text": " <code>scope</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkScopeNV\">VkScopeNV</a> value"
5044 }
5045 ]
5046 },
5047 "vkCreateValidationCacheEXT": {
5048 "(VK_EXT_validation_cache)": [
5049 {
5050 "vuid": "VUID-vkCreateValidationCacheEXT-device-parameter",
5051 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5052 },
5053 {
5054 "vuid": "VUID-vkCreateValidationCacheEXT-pCreateInfo-parameter",
5055 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkValidationCacheCreateInfoEXT</code> structure"
5056 },
5057 {
5058 "vuid": "VUID-vkCreateValidationCacheEXT-pAllocator-parameter",
5059 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
5060 },
5061 {
5062 "vuid": "VUID-vkCreateValidationCacheEXT-pValidationCache-parameter",
5063 "text": " <code>pValidationCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkValidationCacheEXT</code> handle"
5064 }
5065 ]
5066 },
5067 "VkValidationCacheCreateInfoEXT": {
5068 "(VK_EXT_validation_cache)": [
5069 {
5070 "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01534",
5071 "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"
5072 },
5073 {
5074 "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01535",
5075 "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>"
5076 },
5077 {
5078 "vuid": "VUID-VkValidationCacheCreateInfoEXT-sType-sType",
5079 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT</code>"
5080 },
5081 {
5082 "vuid": "VUID-VkValidationCacheCreateInfoEXT-pNext-pNext",
5083 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5084 },
5085 {
5086 "vuid": "VUID-VkValidationCacheCreateInfoEXT-flags-zerobitmask",
5087 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
5088 },
5089 {
5090 "vuid": "VUID-VkValidationCacheCreateInfoEXT-pInitialData-parameter",
5091 "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"
5092 }
5093 ]
5094 },
5095 "vkMergeValidationCachesEXT": {
5096 "(VK_EXT_validation_cache)": [
5097 {
5098 "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-01536",
5099 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches"
5100 },
5101 {
5102 "vuid": "VUID-vkMergeValidationCachesEXT-device-parameter",
5103 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5104 },
5105 {
5106 "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parameter",
5107 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
5108 },
5109 {
5110 "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parameter",
5111 "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <code>VkValidationCacheEXT</code> handles"
5112 },
5113 {
5114 "vuid": "VUID-vkMergeValidationCachesEXT-srcCacheCount-arraylength",
5115 "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
5116 },
5117 {
5118 "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parent",
5119 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5120 },
5121 {
5122 "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parent",
5123 "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5124 }
5125 ]
5126 },
5127 "vkGetValidationCacheDataEXT": {
5128 "(VK_EXT_validation_cache)": [
5129 {
5130 "vuid": "VUID-vkGetValidationCacheDataEXT-device-parameter",
5131 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5132 },
5133 {
5134 "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parameter",
5135 "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
5136 },
5137 {
5138 "vuid": "VUID-vkGetValidationCacheDataEXT-pDataSize-parameter",
5139 "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
5140 },
5141 {
5142 "vuid": "VUID-vkGetValidationCacheDataEXT-pData-parameter",
5143 "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"
5144 },
5145 {
5146 "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parent",
5147 "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5148 }
5149 ]
5150 },
5151 "vkDestroyValidationCacheEXT": {
5152 "(VK_EXT_validation_cache)": [
5153 {
5154 "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01537",
5155 "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"
5156 },
5157 {
5158 "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01538",
5159 "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>"
5160 },
5161 {
5162 "vuid": "VUID-vkDestroyValidationCacheEXT-device-parameter",
5163 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5164 },
5165 {
5166 "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parameter",
5167 "text": " If <code>validationCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
5168 },
5169 {
5170 "vuid": "VUID-vkDestroyValidationCacheEXT-pAllocator-parameter",
5171 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
5172 },
5173 {
5174 "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parent",
5175 "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>"
5176 }
5177 ]
5178 },
5179 "vkCreateComputePipelines": {
5180 "core": [
5181 {
5182 "vuid": "VUID-vkCreateComputePipelines-flags-00695",
5183 "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"
5184 },
5185 {
5186 "vuid": "VUID-vkCreateComputePipelines-flags-00696",
5187 "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set"
5188 },
5189 {
5190 "vuid": "VUID-vkCreateComputePipelines-device-parameter",
5191 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5192 },
5193 {
5194 "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parameter",
5195 "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
5196 },
5197 {
5198 "vuid": "VUID-vkCreateComputePipelines-pCreateInfos-parameter",
5199 "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <code>VkComputePipelineCreateInfo</code> structures"
5200 },
5201 {
5202 "vuid": "VUID-vkCreateComputePipelines-pAllocator-parameter",
5203 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
5204 },
5205 {
5206 "vuid": "VUID-vkCreateComputePipelines-pPipelines-parameter",
5207 "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <code>VkPipeline</code> handles"
5208 },
5209 {
5210 "vuid": "VUID-vkCreateComputePipelines-createInfoCount-arraylength",
5211 "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
5212 },
5213 {
5214 "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parent",
5215 "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>"
5216 }
5217 ]
5218 },
5219 "VkComputePipelineCreateInfo": {
5220 "core": [
5221 {
5222 "vuid": "VUID-VkComputePipelineCreateInfo-flags-00697",
5223 "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>"
5224 },
5225 {
5226 "vuid": "VUID-VkComputePipelineCreateInfo-flags-00698",
5227 "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"
5228 },
5229 {
5230 "vuid": "VUID-VkComputePipelineCreateInfo-flags-00699",
5231 "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>"
5232 },
5233 {
5234 "vuid": "VUID-VkComputePipelineCreateInfo-flags-00700",
5235 "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"
5236 },
5237 {
5238 "vuid": "VUID-VkComputePipelineCreateInfo-stage-00701",
5239 "text": " The <code>stage</code> member of <code>stage</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>"
5240 },
5241 {
5242 "vuid": "VUID-VkComputePipelineCreateInfo-stage-00702",
5243 "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"
5244 },
5245 {
5246 "vuid": "VUID-VkComputePipelineCreateInfo-layout-00703",
5247 "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>"
5248 },
5249 {
5250 "vuid": "VUID-VkComputePipelineCreateInfo-layout-01687",
5251 "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>"
5252 },
5253 {
5254 "vuid": "VUID-VkComputePipelineCreateInfo-sType-sType",
5255 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO</code>"
5256 },
5257 {
5258 "vuid": "VUID-VkComputePipelineCreateInfo-pNext-pNext",
5259 "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>"
5260 },
5261 {
5262 "vuid": "VUID-VkComputePipelineCreateInfo-sType-unique",
5263 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
5264 },
5265 {
5266 "vuid": "VUID-VkComputePipelineCreateInfo-flags-parameter",
5267 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
5268 },
5269 {
5270 "vuid": "VUID-VkComputePipelineCreateInfo-stage-parameter",
5271 "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineShaderStageCreateInfo</code> structure"
5272 },
5273 {
5274 "vuid": "VUID-VkComputePipelineCreateInfo-layout-parameter",
5275 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
5276 },
5277 {
5278 "vuid": "VUID-VkComputePipelineCreateInfo-commonparent",
5279 "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
5280 }
5281 ]
5282 },
5283 "VkPipelineShaderStageCreateInfo": {
5284 "core": [
5285 {
5286 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00704",
5287 "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>"
5288 },
5289 {
5290 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00705",
5291 "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>"
5292 },
5293 {
5294 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00706",
5295 "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>"
5296 },
5297 {
5298 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-00707",
5299 "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>"
5300 },
5301 {
5302 "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708",
5303 "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>"
5304 },
5305 {
5306 "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709",
5307 "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>"
5308 },
5309 {
5310 "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710",
5311 "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>"
5312 },
5313 {
5314 "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711",
5315 "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>"
5316 },
5317 {
5318 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00712",
5319 "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>"
5320 },
5321 {
5322 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00713",
5323 "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>"
5324 },
5325 {
5326 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00714",
5327 "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>"
5328 },
5329 {
5330 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00715",
5331 "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>"
5332 },
5333 {
5334 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02596",
5335 "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"
5336 },
5337 {
5338 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02597",
5339 "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"
5340 },
5341 {
5342 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00718",
5343 "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>"
5344 },
5345 {
5346 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00719",
5347 "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"
5348 },
5349 {
5350 "vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-sType",
5351 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO</code>"
5352 },
5353 {
5354 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-pNext",
5355 "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>"
5356 },
5357 {
5358 "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-parameter",
5359 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineShaderStageCreateFlagBits\">VkPipelineShaderStageCreateFlagBits</a> values"
5360 },
5361 {
5362 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-parameter",
5363 "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value"
5364 },
5365 {
5366 "vuid": "VUID-VkPipelineShaderStageCreateInfo-module-parameter",
5367 "text": " <code>module</code> <strong class=\"purple\">must</strong> be a valid <code>VkShaderModule</code> handle"
5368 },
5369 {
5370 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-parameter",
5371 "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
5372 },
5373 {
5374 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter",
5375 "text": " If <code>pSpecializationInfo</code> is not <code>NULL</code>, <code>pSpecializationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSpecializationInfo</code> structure"
5376 }
5377 ],
5378 "(VK_NV_mesh_shader)": [
5379 {
5380 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02091",
5381 "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>"
5382 },
5383 {
5384 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02092",
5385 "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>"
5386 },
5387 {
5388 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02093",
5389 "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>."
5390 },
5391 {
5392 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02094",
5393 "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>."
5394 }
5395 ],
5396 "(VK_EXT_shader_stencil_export)": [
5397 {
5398 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-01511",
5399 "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"
5400 }
5401 ],
5402 "(VK_EXT_subgroup_size_control)": [
5403 {
5404 "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02784",
5405 "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."
5406 },
5407 {
5408 "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02785",
5409 "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."
5410 },
5411 {
5412 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02754",
5413 "text": " If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is chained to <code>pNext</code>, <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."
5414 },
5415 {
5416 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02755",
5417 "text": " If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is chained to <code>pNext</code>, 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>."
5418 },
5419 {
5420 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02756",
5421 "text": " If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is chained to <code>pNext</code> and <code>stage</code> is VK_SHADER_STAGE_COMPUTE_BIT then 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>."
5422 },
5423 {
5424 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02757",
5425 "text": " If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is chained to <code>pNext</code>, 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>."
5426 },
5427 {
5428 "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02758",
5429 "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>."
5430 },
5431 {
5432 "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02759",
5433 "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 chained to <code>pNext</code>, 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>."
5434 }
5435 ]
5436 },
5437 "VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT": {
5438 "(VK_EXT_subgroup_size_control)": [
5439 {
5440 "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02760",
5441 "text": " <code>requiredSubgroupSize</code> <strong class=\"purple\">must</strong> be a power-of-two integer."
5442 },
5443 {
5444 "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02761",
5445 "text": " <code>requiredSubgroupSize</code> <strong class=\"purple\">must</strong> be greater or equal to <a href=\"#limits-min-subgroup-size\">minSubgroupSize</a>."
5446 },
5447 {
5448 "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02762",
5449 "text": " <code>requiredSubgroupSize</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-max-subgroup-size\">maxSubgroupSize</a>."
5450 },
5451 {
5452 "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-sType-sType",
5453 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT</code>"
5454 }
5455 ]
5456 },
5457 "vkCreateGraphicsPipelines": {
5458 "core": [
5459 {
5460 "vuid": "VUID-vkCreateGraphicsPipelines-flags-00720",
5461 "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"
5462 },
5463 {
5464 "vuid": "VUID-vkCreateGraphicsPipelines-flags-00721",
5465 "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"
5466 },
5467 {
5468 "vuid": "VUID-vkCreateGraphicsPipelines-device-parameter",
5469 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5470 },
5471 {
5472 "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parameter",
5473 "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
5474 },
5475 {
5476 "vuid": "VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter",
5477 "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <code>VkGraphicsPipelineCreateInfo</code> structures"
5478 },
5479 {
5480 "vuid": "VUID-vkCreateGraphicsPipelines-pAllocator-parameter",
5481 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
5482 },
5483 {
5484 "vuid": "VUID-vkCreateGraphicsPipelines-pPipelines-parameter",
5485 "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <code>VkPipeline</code> handles"
5486 },
5487 {
5488 "vuid": "VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength",
5489 "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
5490 },
5491 {
5492 "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parent",
5493 "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>"
5494 }
5495 ]
5496 },
5497 "VkGraphicsPipelineCreateInfo": {
5498 "core": [
5499 {
5500 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00722",
5501 "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>"
5502 },
5503 {
5504 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00723",
5505 "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"
5506 },
5507 {
5508 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00724",
5509 "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>"
5510 },
5511 {
5512 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00725",
5513 "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"
5514 },
5515 {
5516 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00726",
5517 "text": " The <code>stage</code> member of each element of <code>pStages</code> <strong class=\"purple\">must</strong> be unique"
5518 },
5519 {
5520 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00728",
5521 "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>"
5522 },
5523 {
5524 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00729",
5525 "text": " If <code>pStages</code> includes a tessellation control shader stage, it <strong class=\"purple\">must</strong> include a tessellation evaluation shader stage"
5526 },
5527 {
5528 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00730",
5529 "text": " If <code>pStages</code> includes a tessellation evaluation shader stage, it <strong class=\"purple\">must</strong> include a tessellation control shader stage"
5530 },
5531 {
5532 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00731",
5533 "text": " If <code>pStages</code> includes a tessellation control shader stage and a tessellation evaluation shader stage, <code>pTessellationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineTessellationStateCreateInfo</code> structure"
5534 },
5535 {
5536 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00732",
5537 "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"
5538 },
5539 {
5540 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00733",
5541 "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"
5542 },
5543 {
5544 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00734",
5545 "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"
5546 },
5547 {
5548 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00735",
5549 "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"
5550 },
5551 {
5552 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00736",
5553 "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>"
5554 },
5555 {
5556 "vuid": "VUID-VkGraphicsPipelineCreateInfo-topology-00737",
5557 "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"
5558 },
5559 {
5560 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00738",
5561 "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>"
5562 },
5563 {
5564 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00739",
5565 "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"
5566 },
5567 {
5568 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00740",
5569 "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"
5570 },
5571 {
5572 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00741",
5573 "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>"
5574 },
5575 {
5576 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00742",
5577 "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"
5578 },
5579 {
5580 "vuid": "VUID-VkGraphicsPipelineCreateInfo-blendEnable-02023",
5581 "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>."
5582 },
5583 {
5584 "vuid": "VUID-VkGraphicsPipelineCreateInfo-attachmentCount-00746",
5585 "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>"
5586 },
5587 {
5588 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00747",
5589 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT</code>, the <code>pViewports</code> member of <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState</code>::<code>viewportCount</code> valid <code>VkViewport</code> structures"
5590 },
5591 {
5592 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00748",
5593 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SCISSOR</code>, the <code>pScissors</code> member of <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState</code>::<code>scissorCount</code> <code>VkRect2D</code> structures"
5594 },
5595 {
5596 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749",
5597 "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>"
5598 },
5599 {
5600 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750",
5601 "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineViewportStateCreateInfo</code> structure"
5602 },
5603 {
5604 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751",
5605 "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineMultisampleStateCreateInfo</code> structure"
5606 },
5607 {
5608 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00752",
5609 "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, and <code>subpass</code> uses a depth/stencil attachment, <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineDepthStencilStateCreateInfo</code> structure"
5610 },
5611 {
5612 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00753",
5613 "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, and <code>subpass</code> uses color attachments, <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineColorBlendStateCreateInfo</code> structure"
5614 },
5615 {
5616 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754",
5617 "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>"
5618 },
5619 {
5620 "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-00756",
5621 "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>"
5622 },
5623 {
5624 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00757",
5625 "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"
5626 },
5627 {
5628 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00758",
5629 "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>"
5630 },
5631 {
5632 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00759",
5633 "text": " <code>subpass</code> <strong class=\"purple\">must</strong> be a valid subpass within <code>renderPass</code>"
5634 },
5635 {
5636 "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-01688",
5637 "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>"
5638 },
5639 {
5640 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02097",
5641 "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"
5642 },
5643 {
5644 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02098",
5645 "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"
5646 },
5647 {
5648 "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-sType",
5649 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO</code>"
5650 },
5651 {
5652 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pNext-pNext",
5653 "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>, <a href=\"#VkPipelineCreationFeedbackCreateInfoEXT\">VkPipelineCreationFeedbackCreateInfoEXT</a>, <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>, or <a href=\"#VkPipelineRepresentativeFragmentTestStateCreateInfoNV\">VkPipelineRepresentativeFragmentTestStateCreateInfoNV</a>"
5654 },
5655 {
5656 "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-unique",
5657 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
5658 },
5659 {
5660 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-parameter",
5661 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
5662 },
5663 {
5664 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-parameter",
5665 "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <code>VkPipelineShaderStageCreateInfo</code> structures"
5666 },
5667 {
5668 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-parameter",
5669 "text": " <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineRasterizationStateCreateInfo</code> structure"
5670 },
5671 {
5672 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter",
5673 "text": " If <code>pDynamicState</code> is not <code>NULL</code>, <code>pDynamicState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineDynamicStateCreateInfo</code> structure"
5674 },
5675 {
5676 "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-parameter",
5677 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
5678 },
5679 {
5680 "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-parameter",
5681 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
5682 },
5683 {
5684 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stageCount-arraylength",
5685 "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
5686 },
5687 {
5688 "vuid": "VUID-VkGraphicsPipelineCreateInfo-commonparent",
5689 "text": " Each of <code>basePipelineHandle</code>, <code>layout</code>, and <code>renderPass</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
5690 }
5691 ],
5692 "!(VK_NV_mesh_shader)": [
5693 {
5694 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00727",
5695 "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>"
5696 }
5697 ],
5698 "(VK_NV_mesh_shader)": [
5699 {
5700 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02095",
5701 "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>)."
5702 },
5703 {
5704 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-02096",
5705 "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>."
5706 }
5707 ],
5708 "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [
5709 {
5710 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00743",
5711 "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>"
5712 },
5713 {
5714 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00744",
5715 "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>"
5716 }
5717 ],
5718 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
5719 {
5720 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01756",
5721 "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>"
5722 },
5723 {
5724 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01757",
5725 "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>"
5726 },
5727 {
5728 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-01565",
5729 "text": " If <code>pStages</code> includes a fragment shader stage and an input attachment was referenced by the <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a> at <code>renderPass</code> create time, its shader code <strong class=\"purple\">must</strong> not read from any aspect that was not specified in the <code>aspectMask</code> of the corresponding <a href=\"#VkInputAttachmentAspectReference\">VkInputAttachmentAspectReference</a> structure."
5730 }
5731 ],
5732 "!(VK_EXT_depth_range_unrestricted)": [
5733 {
5734 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00755",
5735 "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"
5736 }
5737 ],
5738 "(VK_EXT_depth_range_unrestricted)": [
5739 {
5740 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510",
5741 "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"
5742 }
5743 ],
5744 "(VK_EXT_sample_locations)": [
5745 {
5746 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521",
5747 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling <code>rasterizationSamples</code>"
5748 },
5749 {
5750 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522",
5751 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling <code>rasterizationSamples</code>"
5752 },
5753 {
5754 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523",
5755 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code>"
5756 },
5757 {
5758 "vuid": "VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524",
5759 "text": " If the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>"
5760 }
5761 ],
5762 "(VK_AMD_mixed_attachment_samples)": [
5763 {
5764 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01505",
5765 "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"
5766 }
5767 ],
5768 "(VK_NV_framebuffer_mixed_samples)": [
5769 {
5770 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01411",
5771 "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"
5772 },
5773 {
5774 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01412",
5775 "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"
5776 }
5777 ],
5778 "(VK_NV_coverage_reduction_mode)": [
5779 {
5780 "vuid": "VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722",
5781 "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>"
5782 }
5783 ],
5784 "(VK_VERSION_1_1,VK_KHR_multiview)": [
5785 {
5786 "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00760",
5787 "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."
5788 },
5789 {
5790 "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00761",
5791 "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."
5792 },
5793 {
5794 "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00762",
5795 "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"
5796 },
5797 {
5798 "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00763",
5799 "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."
5800 }
5801 ],
5802 "(VK_VERSION_1_1,VK_KHR_device_group)": [
5803 {
5804 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00764",
5805 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag."
5806 }
5807 ],
5808 "(VK_NV_clip_space_w_scaling)": [
5809 {
5810 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715",
5811 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code>, and the <code>viewportWScalingEnable</code> member of a <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure, chained to the <code>pNext</code> chain of <code>pViewportState</code>, is <code>VK_TRUE</code>, the <code>pViewportWScalings</code> member of the <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> <strong class=\"purple\">must</strong> be a pointer to an array of <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> valid <a href=\"#VkViewportWScalingNV\">VkViewportWScalingNV</a> structures"
5812 }
5813 ],
5814 "(VK_EXT_transform_feedback)": [
5815 {
5816 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02317",
5817 "text": " The <code>Xfb</code> execution mode <strong class=\"purple\">can</strong> be specified by only one shader stage in <code>pStages</code>"
5818 },
5819 {
5820 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02318",
5821 "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"
5822 },
5823 {
5824 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319",
5825 "text": " If a <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code> value other than zero is specified, all variables in the output interface of the entry point being compiled decorated with <code>Position</code>, <code>PointSize</code>, <code>ClipDistance</code>, or <code>CullDistance</code> <strong class=\"purple\">must</strong> all be decorated with identical <code>Stream</code> values that match the <code>rasterizationStream</code>"
5826 },
5827 {
5828 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320",
5829 "text": " If <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code> is zero, or not specified, all variables in the output interface of the entry point being compiled decorated with <code>Position</code>, <code>PointSize</code>, <code>ClipDistance</code>, or <code>CullDistance</code> <strong class=\"purple\">must</strong> all be decorated with a <code>Stream</code> value of zero, or <strong class=\"purple\">must</strong> not specify the <code>Stream</code> decoration"
5830 },
5831 {
5832 "vuid": "VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321",
5833 "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"
5834 }
5835 ],
5836 "(VK_EXT_transform_feedback)+(VK_NV_mesh_shader)": [
5837 {
5838 "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-02322",
5839 "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."
5840 }
5841 ],
5842 "(VK_EXT_line_rasterization)": [
5843 {
5844 "vuid": "VUID-VkGraphicsPipelineCreateInfo-lineRasterizationMode-02766",
5845 "text": " If the <code>lineRasterizationMode</code> member of a <a href=\"#VkPipelineRasterizationLineStateCreateInfoEXT\">VkPipelineRasterizationLineStateCreateInfoEXT</a> structure chained to 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>"
5846 },
5847 {
5848 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stippledLineEnable-02767",
5849 "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>"
5850 }
5851 ]
5852 },
5853 "VkPipelineDynamicStateCreateInfo": {
5854 "core": [
5855 {
5856 "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442",
5857 "text": " Each element of <code>pDynamicStates</code> <strong class=\"purple\">must</strong> be unique"
5858 },
5859 {
5860 "vuid": "VUID-VkPipelineDynamicStateCreateInfo-sType-sType",
5861 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO</code>"
5862 },
5863 {
5864 "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext",
5865 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5866 },
5867 {
5868 "vuid": "VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask",
5869 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
5870 },
5871 {
5872 "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter",
5873 "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"
5874 }
5875 ]
5876 },
5877 "vkDestroyPipeline": {
5878 "core": [
5879 {
5880 "vuid": "VUID-vkDestroyPipeline-pipeline-00765",
5881 "text": " All submitted commands that refer to <code>pipeline</code> <strong class=\"purple\">must</strong> have completed execution"
5882 },
5883 {
5884 "vuid": "VUID-vkDestroyPipeline-pipeline-00766",
5885 "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"
5886 },
5887 {
5888 "vuid": "VUID-vkDestroyPipeline-pipeline-00767",
5889 "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>"
5890 },
5891 {
5892 "vuid": "VUID-vkDestroyPipeline-device-parameter",
5893 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5894 },
5895 {
5896 "vuid": "VUID-vkDestroyPipeline-pipeline-parameter",
5897 "text": " If <code>pipeline</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
5898 },
5899 {
5900 "vuid": "VUID-vkDestroyPipeline-pAllocator-parameter",
5901 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
5902 },
5903 {
5904 "vuid": "VUID-vkDestroyPipeline-pipeline-parent",
5905 "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>"
5906 }
5907 ]
5908 },
5909 "vkCreatePipelineCache": {
5910 "core": [
5911 {
5912 "vuid": "VUID-vkCreatePipelineCache-device-parameter",
5913 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5914 },
5915 {
5916 "vuid": "VUID-vkCreatePipelineCache-pCreateInfo-parameter",
5917 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineCacheCreateInfo</code> structure"
5918 },
5919 {
5920 "vuid": "VUID-vkCreatePipelineCache-pAllocator-parameter",
5921 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
5922 },
5923 {
5924 "vuid": "VUID-vkCreatePipelineCache-pPipelineCache-parameter",
5925 "text": " <code>pPipelineCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPipelineCache</code> handle"
5926 }
5927 ]
5928 },
5929 "VkPipelineCacheCreateInfo": {
5930 "core": [
5931 {
5932 "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00768",
5933 "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"
5934 },
5935 {
5936 "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00769",
5937 "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>"
5938 },
5939 {
5940 "vuid": "VUID-VkPipelineCacheCreateInfo-sType-sType",
5941 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO</code>"
5942 },
5943 {
5944 "vuid": "VUID-VkPipelineCacheCreateInfo-pNext-pNext",
5945 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
5946 },
5947 {
5948 "vuid": "VUID-VkPipelineCacheCreateInfo-flags-zerobitmask",
5949 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
5950 },
5951 {
5952 "vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-parameter",
5953 "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"
5954 }
5955 ]
5956 },
5957 "vkMergePipelineCaches": {
5958 "core": [
5959 {
5960 "vuid": "VUID-vkMergePipelineCaches-dstCache-00770",
5961 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches"
5962 },
5963 {
5964 "vuid": "VUID-vkMergePipelineCaches-device-parameter",
5965 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5966 },
5967 {
5968 "vuid": "VUID-vkMergePipelineCaches-dstCache-parameter",
5969 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
5970 },
5971 {
5972 "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parameter",
5973 "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <code>VkPipelineCache</code> handles"
5974 },
5975 {
5976 "vuid": "VUID-vkMergePipelineCaches-srcCacheCount-arraylength",
5977 "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
5978 },
5979 {
5980 "vuid": "VUID-vkMergePipelineCaches-dstCache-parent",
5981 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5982 },
5983 {
5984 "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parent",
5985 "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
5986 }
5987 ]
5988 },
5989 "vkGetPipelineCacheData": {
5990 "core": [
5991 {
5992 "vuid": "VUID-vkGetPipelineCacheData-device-parameter",
5993 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
5994 },
5995 {
5996 "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parameter",
5997 "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
5998 },
5999 {
6000 "vuid": "VUID-vkGetPipelineCacheData-pDataSize-parameter",
6001 "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
6002 },
6003 {
6004 "vuid": "VUID-vkGetPipelineCacheData-pData-parameter",
6005 "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"
6006 },
6007 {
6008 "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parent",
6009 "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
6010 }
6011 ]
6012 },
6013 "vkDestroyPipelineCache": {
6014 "core": [
6015 {
6016 "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00771",
6017 "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"
6018 },
6019 {
6020 "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00772",
6021 "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>"
6022 },
6023 {
6024 "vuid": "VUID-vkDestroyPipelineCache-device-parameter",
6025 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6026 },
6027 {
6028 "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parameter",
6029 "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
6030 },
6031 {
6032 "vuid": "VUID-vkDestroyPipelineCache-pAllocator-parameter",
6033 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
6034 },
6035 {
6036 "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parent",
6037 "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>"
6038 }
6039 ]
6040 },
6041 "VkSpecializationInfo": {
6042 "core": [
6043 {
6044 "vuid": "VUID-VkSpecializationInfo-offset-00773",
6045 "text": " The <code>offset</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than <code>dataSize</code>"
6046 },
6047 {
6048 "vuid": "VUID-VkSpecializationInfo-pMapEntries-00774",
6049 "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>"
6050 },
6051 {
6052 "vuid": "VUID-VkSpecializationInfo-pMapEntries-parameter",
6053 "text": " If <code>mapEntryCount</code> is not <code>0</code>, <code>pMapEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>mapEntryCount</code> valid <code>VkSpecializationMapEntry</code> structures"
6054 },
6055 {
6056 "vuid": "VUID-VkSpecializationInfo-pData-parameter",
6057 "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"
6058 }
6059 ]
6060 },
6061 "VkSpecializationMapEntry": {
6062 "core": [
6063 {
6064 "vuid": "VUID-VkSpecializationMapEntry-constantID-00776",
6065 "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>"
6066 }
6067 ]
6068 },
6069 "vkCmdBindPipeline": {
6070 "core": [
6071 {
6072 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00777",
6073 "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"
6074 },
6075 {
6076 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00778",
6077 "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"
6078 },
6079 {
6080 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00779",
6081 "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"
6082 },
6083 {
6084 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00780",
6085 "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"
6086 },
6087 {
6088 "vuid": "VUID-vkCmdBindPipeline-pipeline-00781",
6089 "text": " If the <a href=\"#features-variableMultisampleRate\">variable multisample rate</a> feature is not supported, <code>pipeline</code> is a graphics pipeline, the current subpass has no attachments, and this is not the first call to this function with a graphics pipeline after transitioning to the current subpass, then the sample count specified by this pipeline <strong class=\"purple\">must</strong> match that set in the previous pipeline"
6090 },
6091 {
6092 "vuid": "VUID-vkCmdBindPipeline-commandBuffer-parameter",
6093 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
6094 },
6095 {
6096 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-parameter",
6097 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
6098 },
6099 {
6100 "vuid": "VUID-vkCmdBindPipeline-pipeline-parameter",
6101 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
6102 },
6103 {
6104 "vuid": "VUID-vkCmdBindPipeline-commandBuffer-recording",
6105 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
6106 },
6107 {
6108 "vuid": "VUID-vkCmdBindPipeline-commandBuffer-cmdpool",
6109 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
6110 },
6111 {
6112 "vuid": "VUID-vkCmdBindPipeline-commonparent",
6113 "text": " Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
6114 }
6115 ],
6116 "(VK_EXT_sample_locations)": [
6117 {
6118 "vuid": "VUID-vkCmdBindPipeline-variableSampleLocations-01525",
6119 "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"
6120 }
6121 ],
6122 "(VK_EXT_transform_feedback)": [
6123 {
6124 "vuid": "VUID-vkCmdBindPipeline-None-02323",
6125 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
6126 }
6127 ],
6128 "(VK_NV_ray_tracing)": [
6129 {
6130 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02391",
6131 "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
6132 },
6133 {
6134 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02392",
6135 "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, the <code>pipeline</code> <strong class=\"purple\">must</strong> be a ray tracing pipeline"
6136 }
6137 ]
6138 },
6139 "vkGetPipelineExecutablePropertiesKHR": {
6140 "(VK_KHR_pipeline_executable_properties)": [
6141 {
6142 "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipelineExecutableProperties-03270",
6143 "text": " <a href=\"#features-pipelineExecutableProperties\"><code>pipelineExecutableProperties</code></a> <strong class=\"purple\">must</strong> be enabled."
6144 },
6145 {
6146 "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipeline-03271",
6147 "text": " <code>pipeline</code> member of <code>pPipelineInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>."
6148 },
6149 {
6150 "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-device-parameter",
6151 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6152 },
6153 {
6154 "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pPipelineInfo-parameter",
6155 "text": " <code>pPipelineInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineInfoKHR</code> structure"
6156 },
6157 {
6158 "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pExecutableCount-parameter",
6159 "text": " <code>pExecutableCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
6160 },
6161 {
6162 "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pProperties-parameter",
6163 "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> <code>VkPipelineExecutablePropertiesKHR</code> structures"
6164 }
6165 ]
6166 },
6167 "VkPipelineInfoKHR": {
6168 "(VK_KHR_pipeline_executable_properties)": [
6169 {
6170 "vuid": "VUID-VkPipelineInfoKHR-sType-sType",
6171 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR</code>"
6172 },
6173 {
6174 "vuid": "VUID-VkPipelineInfoKHR-pNext-pNext",
6175 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6176 },
6177 {
6178 "vuid": "VUID-VkPipelineInfoKHR-pipeline-parameter",
6179 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
6180 }
6181 ]
6182 },
6183 "VkPipelineExecutablePropertiesKHR": {
6184 "(VK_KHR_pipeline_executable_properties)": [
6185 {
6186 "vuid": "VUID-VkPipelineExecutablePropertiesKHR-sType-sType",
6187 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR</code>"
6188 },
6189 {
6190 "vuid": "VUID-VkPipelineExecutablePropertiesKHR-pNext-pNext",
6191 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6192 }
6193 ]
6194 },
6195 "vkGetPipelineExecutableStatisticsKHR": {
6196 "(VK_KHR_pipeline_executable_properties)": [
6197 {
6198 "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipelineExecutableInfo-03272",
6199 "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled."
6200 },
6201 {
6202 "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03273",
6203 "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>."
6204 },
6205 {
6206 "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03274",
6207 "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>."
6208 },
6209 {
6210 "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-device-parameter",
6211 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6212 },
6213 {
6214 "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pExecutableInfo-parameter",
6215 "text": " <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineExecutableInfoKHR</code> structure"
6216 },
6217 {
6218 "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatisticCount-parameter",
6219 "text": " <code>pStatisticCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
6220 },
6221 {
6222 "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatistics-parameter",
6223 "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> <code>VkPipelineExecutableStatisticKHR</code> structures"
6224 }
6225 ]
6226 },
6227 "VkPipelineExecutableInfoKHR": {
6228 "(VK_KHR_pipeline_executable_properties)": [
6229 {
6230 "vuid": "VUID-VkPipelineExecutableInfoKHR-executableIndex-03275",
6231 "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>."
6232 },
6233 {
6234 "vuid": "VUID-VkPipelineExecutableInfoKHR-sType-sType",
6235 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR</code>"
6236 },
6237 {
6238 "vuid": "VUID-VkPipelineExecutableInfoKHR-pNext-pNext",
6239 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6240 },
6241 {
6242 "vuid": "VUID-VkPipelineExecutableInfoKHR-pipeline-parameter",
6243 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
6244 }
6245 ]
6246 },
6247 "VkPipelineExecutableStatisticKHR": {
6248 "(VK_KHR_pipeline_executable_properties)": [
6249 {
6250 "vuid": "VUID-VkPipelineExecutableStatisticKHR-sType-sType",
6251 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR</code>"
6252 },
6253 {
6254 "vuid": "VUID-VkPipelineExecutableStatisticKHR-pNext-pNext",
6255 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6256 }
6257 ]
6258 },
6259 "vkGetPipelineExecutableInternalRepresentationsKHR": {
6260 "(VK_KHR_pipeline_executable_properties)": [
6261 {
6262 "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipelineExecutableProperties-03276",
6263 "text": " <a href=\"#features-pipelineExecutableProperties\"><code>pipelineExecutableProperties</code></a> <strong class=\"purple\">must</strong> be enabled."
6264 },
6265 {
6266 "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03277",
6267 "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>."
6268 },
6269 {
6270 "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03278",
6271 "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>."
6272 },
6273 {
6274 "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-device-parameter",
6275 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6276 },
6277 {
6278 "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pExecutableInfo-parameter",
6279 "text": " <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineExecutableInfoKHR</code> structure"
6280 },
6281 {
6282 "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentationCount-parameter",
6283 "text": " <code>pInternalRepresentationCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
6284 },
6285 {
6286 "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentations-parameter",
6287 "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> <code>VkPipelineExecutableInternalRepresentationKHR</code> structures"
6288 }
6289 ]
6290 },
6291 "VkPipelineExecutableInternalRepresentationKHR": {
6292 "(VK_KHR_pipeline_executable_properties)": [
6293 {
6294 "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-sType-sType",
6295 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR</code>"
6296 },
6297 {
6298 "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-pNext-pNext",
6299 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6300 },
6301 {
6302 "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-name-parameter",
6303 "text": " <code>name</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string whose length is less than or equal to VK_MAX_DESCRIPTION_SIZE"
6304 },
6305 {
6306 "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-description-parameter",
6307 "text": " <code>description</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string whose length is less than or equal to VK_MAX_DESCRIPTION_SIZE"
6308 },
6309 {
6310 "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-pData-parameter",
6311 "text": " If <code>dataSize</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>dataSize</code> bytes"
6312 }
6313 ]
6314 },
6315 "vkGetShaderInfoAMD": {
6316 "(VK_AMD_shader_info)": [
6317 {
6318 "vuid": "VUID-vkGetShaderInfoAMD-device-parameter",
6319 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6320 },
6321 {
6322 "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parameter",
6323 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
6324 },
6325 {
6326 "vuid": "VUID-vkGetShaderInfoAMD-shaderStage-parameter",
6327 "text": " <code>shaderStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value"
6328 },
6329 {
6330 "vuid": "VUID-vkGetShaderInfoAMD-infoType-parameter",
6331 "text": " <code>infoType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderInfoTypeAMD\">VkShaderInfoTypeAMD</a> value"
6332 },
6333 {
6334 "vuid": "VUID-vkGetShaderInfoAMD-pInfoSize-parameter",
6335 "text": " <code>pInfoSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
6336 },
6337 {
6338 "vuid": "VUID-vkGetShaderInfoAMD-pInfo-parameter",
6339 "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"
6340 },
6341 {
6342 "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parent",
6343 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
6344 }
6345 ]
6346 },
6347 "VkPipelineCompilerControlCreateInfoAMD": {
6348 "(VK_AMD_pipeline_compiler_control)": [
6349 {
6350 "vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-sType-sType",
6351 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD</code>"
6352 },
6353 {
6354 "vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-compilerControlFlags-zerobitmask",
6355 "text": " <code>compilerControlFlags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
6356 }
6357 ]
6358 },
6359 "vkCreateRayTracingPipelinesNV": {
6360 "(VK_NV_ray_tracing)": [
6361 {
6362 "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-02402",
6363 "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"
6364 },
6365 {
6366 "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-02403",
6367 "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"
6368 },
6369 {
6370 "vuid": "VUID-vkCreateRayTracingPipelinesNV-device-parameter",
6371 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6372 },
6373 {
6374 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter",
6375 "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
6376 },
6377 {
6378 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter",
6379 "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <code>VkRayTracingPipelineCreateInfoNV</code> structures"
6380 },
6381 {
6382 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter",
6383 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
6384 },
6385 {
6386 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter",
6387 "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <code>VkPipeline</code> handles"
6388 },
6389 {
6390 "vuid": "VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength",
6391 "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6392 },
6393 {
6394 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent",
6395 "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>"
6396 }
6397 ]
6398 },
6399 "VkRayTracingPipelineCreateInfoNV": {
6400 "(VK_NV_ray_tracing)": [
6401 {
6402 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02404",
6403 "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>"
6404 },
6405 {
6406 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02405",
6407 "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"
6408 },
6409 {
6410 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02406",
6411 "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>"
6412 },
6413 {
6414 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02407",
6415 "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>"
6416 },
6417 {
6418 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stage-02408",
6419 "text": " The <code>stage</code> member of one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_RAYGEN_BIT_NV</code>"
6420 },
6421 {
6422 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-02409",
6423 "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"
6424 },
6425 {
6426 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-02410",
6427 "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>"
6428 },
6429 {
6430 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-02411",
6431 "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>"
6432 },
6433 {
6434 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-02412",
6435 "text": " <code>maxRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxRecursionDepth</code>"
6436 },
6437 {
6438 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-sType",
6439 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV</code>"
6440 },
6441 {
6442 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext",
6443 "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>"
6444 },
6445 {
6446 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter",
6447 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
6448 },
6449 {
6450 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter",
6451 "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <code>VkPipelineShaderStageCreateInfo</code> structures"
6452 },
6453 {
6454 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter",
6455 "text": " <code>pGroups</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>groupCount</code> valid <code>VkRayTracingShaderGroupCreateInfoNV</code> structures"
6456 },
6457 {
6458 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter",
6459 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
6460 },
6461 {
6462 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength",
6463 "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6464 },
6465 {
6466 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength",
6467 "text": " <code>groupCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6468 },
6469 {
6470 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-commonparent",
6471 "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
6472 }
6473 ]
6474 },
6475 "VkRayTracingShaderGroupCreateInfoNV": {
6476 "(VK_NV_ray_tracing)": [
6477 {
6478 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413",
6479 "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV</code> then <code>generalShader</code> <strong class=\"purple\">must</strong> be a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_RAYGEN_BIT_NV</code>, <code>VK_SHADER_STAGE_MISS_BIT_NV</code>, or <code>VK_SHADER_STAGE_CALLABLE_BIT_NV</code>"
6480 },
6481 {
6482 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414",
6483 "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>"
6484 },
6485 {
6486 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415",
6487 "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_INTERSECTION_BIT_NV</code>"
6488 },
6489 {
6490 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416",
6491 "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>"
6492 },
6493 {
6494 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417",
6495 "text": " <code>closestHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_NV</code> or a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV</code>"
6496 },
6497 {
6498 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418",
6499 "text": " <code>anyHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_NV</code> or a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_ANY_HIT_BIT_NV</code>"
6500 },
6501 {
6502 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType",
6503 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV</code>"
6504 },
6505 {
6506 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext",
6507 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
6508 },
6509 {
6510 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter",
6511 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRayTracingShaderGroupTypeNV\">VkRayTracingShaderGroupTypeNV</a> value"
6512 }
6513 ]
6514 },
6515 "vkGetRayTracingShaderGroupHandlesNV": {
6516 "(VK_NV_ray_tracing)": [
6517 {
6518 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-firstGroup-02419",
6519 "text": " The sum of <code>firstGroup</code> and <code>groupCount</code> <strong class=\"purple\">must</strong> be less than the number of shader groups in <code>pipeline</code>."
6520 },
6521 {
6522 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-dataSize-02420",
6523 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be at least <span class=\"eq\"><code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code> {times} <code>groupCount</code></span>"
6524 },
6525 {
6526 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-device-parameter",
6527 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6528 },
6529 {
6530 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-pipeline-parameter",
6531 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
6532 },
6533 {
6534 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-pData-parameter",
6535 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
6536 },
6537 {
6538 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-dataSize-arraylength",
6539 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6540 },
6541 {
6542 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-pipeline-parent",
6543 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
6544 }
6545 ]
6546 },
6547 "vkCompileDeferredNV": {
6548 "(VK_NV_ray_tracing)": [
6549 {
6550 "vuid": "VUID-vkCompileDeferredNV-pipeline-02237",
6551 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV</code>"
6552 },
6553 {
6554 "vuid": "VUID-vkCompileDeferredNV-shader-02238",
6555 "text": " <code>shader</code> <strong class=\"purple\">must</strong> not have been called as a deferred compile before"
6556 },
6557 {
6558 "vuid": "VUID-vkCompileDeferredNV-device-parameter",
6559 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6560 },
6561 {
6562 "vuid": "VUID-vkCompileDeferredNV-pipeline-parameter",
6563 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
6564 },
6565 {
6566 "vuid": "VUID-vkCompileDeferredNV-pipeline-parent",
6567 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
6568 }
6569 ]
6570 },
6571 "VkPipelineCreationFeedbackCreateInfoEXT": {
6572 "(VK_EXT_pipeline_creation_feedback)": [
6573 {
6574 "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02668",
6575 "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>"
6576 },
6577 {
6578 "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02669",
6579 "text": " When chained to <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal 1"
6580 },
6581 {
6582 "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-sType-sType",
6583 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT</code>"
6584 },
6585 {
6586 "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineCreationFeedback-parameter",
6587 "text": " <code>pPipelineCreationFeedback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPipelineCreationFeedbackEXT</code> structure"
6588 },
6589 {
6590 "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineStageCreationFeedbacks-parameter",
6591 "text": " <code>pPipelineStageCreationFeedbacks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pipelineStageCreationFeedbackCount</code> <code>VkPipelineCreationFeedbackEXT</code> structures"
6592 },
6593 {
6594 "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-arraylength",
6595 "text": " <code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6596 }
6597 ],
6598 "(VK_EXT_pipeline_creation_feedback)+(VK_NV_ray_tracing)": [
6599 {
6600 "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02670",
6601 "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>"
6602 }
6603 ]
6604 },
6605 "VkAllocationCallbacks": {
6606 "core": [
6607 {
6608 "vuid": "VUID-VkAllocationCallbacks-pfnAllocation-00632",
6609 "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>"
6610 },
6611 {
6612 "vuid": "VUID-VkAllocationCallbacks-pfnReallocation-00633",
6613 "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>"
6614 },
6615 {
6616 "vuid": "VUID-VkAllocationCallbacks-pfnFree-00634",
6617 "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>"
6618 },
6619 {
6620 "vuid": "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635",
6621 "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"
6622 }
6623 ]
6624 },
6625 "vkGetPhysicalDeviceMemoryProperties": {
6626 "core": [
6627 {
6628 "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter",
6629 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
6630 },
6631 {
6632 "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-pMemoryProperties-parameter",
6633 "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceMemoryProperties</code> structure"
6634 }
6635 ]
6636 },
6637 "vkGetPhysicalDeviceMemoryProperties2": {
6638 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
6639 {
6640 "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter",
6641 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
6642 },
6643 {
6644 "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-pMemoryProperties-parameter",
6645 "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceMemoryProperties2</code> structure"
6646 }
6647 ]
6648 },
6649 "VkPhysicalDeviceMemoryProperties2": {
6650 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
6651 {
6652 "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-sType",
6653 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2</code>"
6654 },
6655 {
6656 "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-pNext-pNext",
6657 "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>"
6658 }
6659 ]
6660 },
6661 "VkPhysicalDeviceMemoryBudgetPropertiesEXT": {
6662 "(VK_EXT_memory_budget)": [
6663 {
6664 "vuid": "VUID-VkPhysicalDeviceMemoryBudgetPropertiesEXT-sType-sType",
6665 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT</code>"
6666 }
6667 ]
6668 },
6669 "vkAllocateMemory": {
6670 "core": [
6671 {
6672 "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01713",
6673 "text": " <code>pAllocateInfo</code>-&gt;<code>allocationSize</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryHeaps</code>[<code>pAllocateInfo</code>-&gt;<code>memoryTypeIndex</code>].<code>size</code> as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from."
6674 },
6675 {
6676 "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01714",
6677 "text": " <code>pAllocateInfo</code>-&gt;<code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryTypeCount</code> as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from."
6678 },
6679 {
6680 "vuid": "VUID-vkAllocateMemory-device-parameter",
6681 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
6682 },
6683 {
6684 "vuid": "VUID-vkAllocateMemory-pAllocateInfo-parameter",
6685 "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryAllocateInfo</code> structure"
6686 },
6687 {
6688 "vuid": "VUID-vkAllocateMemory-pAllocator-parameter",
6689 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
6690 },
6691 {
6692 "vuid": "VUID-vkAllocateMemory-pMemory-parameter",
6693 "text": " <code>pMemory</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceMemory</code> handle"
6694 }
6695 ],
6696 "(VK_AMD_device_coherent_memory)": [
6697 {
6698 "vuid": "VUID-vkAllocateMemory-deviceCoherentMemory-02790",
6699 "text": " If the <a href=\"#features-deviceCoherentMemory\"><code>deviceCoherentMemory</code></a> feature is not enabled, <code>pAllocateInfo</code>-&gt;<code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> not identify a memory type supporting <code>VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD</code>"
6700 }
6701 ]
6702 },
6703 "VkMemoryAllocateInfo": {
6704 "!(VK_ANDROID_external_memory_android_hardware_buffer)": [
6705 {
6706 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00638",
6707 "text": " <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
6708 }
6709 ],
6710 "(VK_KHR_external_memory)+(VK_KHR_dedicated_allocation,VK_NV_dedicated_allocation)": [
6711 {
6712 "vuid": "VUID-VkMemoryAllocateInfo-pNext-00639",
6713 "text": " If the <code>pNext</code> chain contains an instance of <code>VkExportMemoryAllocateInfo</code>, and any of the handle types specified in <code>VkExportMemoryAllocateInfo</code>::<code>handleTypes</code> require a dedicated allocation, as reported by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> in <code>VkExternalImageFormatProperties</code>::<code>externalMemoryProperties</code>::<code>externalMemoryFeatures</code> or <code>VkExternalBufferProperties</code>::<code>externalMemoryProperties</code>::<code>externalMemoryFeatures</code>, the <code>pNext</code> chain must contain an instance of ifdef::VK_KHR_dedicated_allocation[<a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>]"
6714 }
6715 ],
6716 "(VK_KHR_external_memory)+(VK_NV_external_memory)": [
6717 {
6718 "vuid": "VUID-VkMemoryAllocateInfo-pNext-00640",
6719 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>, it <strong class=\"purple\">must</strong> not contain an instance of <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a> or <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a>."
6720 }
6721 ],
6722 "(VK_KHR_external_memory_win32+VK_NV_external_memory_win32)": [
6723 {
6724 "vuid": "VUID-VkMemoryAllocateInfo-pNext-00641",
6725 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>, it <strong class=\"purple\">must</strong> not contain an instance of <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a>."
6726 }
6727 ],
6728 "(VK_KHR_external_memory_fd)": [
6729 {
6730 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01742",
6731 "text": " If the parameters define an import operation, the external handle specified was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the memory object being imported was created."
6732 },
6733 {
6734 "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00648",
6735 "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>."
6736 }
6737 ],
6738 "(VK_KHR_external_memory+VK_KHR_device_group)": [
6739 {
6740 "vuid": "VUID-VkMemoryAllocateInfo-None-00643",
6741 "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the device mask specified by <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a> <strong class=\"purple\">must</strong> match that specified when the memory object being imported was allocated."
6742 },
6743 {
6744 "vuid": "VUID-VkMemoryAllocateInfo-None-00644",
6745 "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the list of physical devices that comprise the logical device passed to <a href=\"#vkAllocateMemory\">vkAllocateMemory</a> <strong class=\"purple\">must</strong> match the list of physical devices that comprise the logical device on which the memory was originally allocated."
6746 }
6747 ],
6748 "(VK_KHR_external_memory_win32)": [
6749 {
6750 "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00645",
6751 "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>."
6752 },
6753 {
6754 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01743",
6755 "text": " If the parameters define an import operation, the external handle was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the memory object being imported was created."
6756 },
6757 {
6758 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00646",
6759 "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> match the size reported in the memory requirements of the <code>image</code> or <code>buffer</code> member of the instance of <code>VkDedicatedAllocationMemoryAllocateInfoNV</code> included in the <code>pNext</code> chain."
6760 },
6761 {
6762 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00647",
6763 "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> match the size specified when creating the Direct3D 12 heap from which the external handle was extracted."
6764 }
6765 ],
6766 "(VK_VERSION_1_1)": [
6767 {
6768 "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872",
6769 "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>."
6770 }
6771 ],
6772 "(VK_EXT_external_memory_host)": [
6773 {
6774 "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01744",
6775 "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>"
6776 },
6777 {
6778 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01745",
6779 "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>"
6780 }
6781 ],
6782 "(VK_ANDROID_external_memory_android_hardware_buffer)": [
6783 {
6784 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-02383",
6785 "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."
6786 },
6787 {
6788 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02384",
6789 "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, and the <code>pNext</code> chain does not contain an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> or <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer <strong class=\"purple\">must</strong> have a <code>AHardwareBuffer_Desc</code>::<code>format</code> of <code>AHARDWAREBUFFER_FORMAT_BLOB</code> and a <code>AHardwareBuffer_Desc</code>::<code>usage</code> that includes <code>AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER</code>."
6790 },
6791 {
6792 "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-02385",
6793 "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."
6794 },
6795 {
6796 "vuid": "VUID-VkMemoryAllocateInfo-pNext-01874",
6797 "text": " If the parameters do not define an import operation, and the <code>pNext</code> chain contains an instance of <code>VkExportMemoryAllocateInfo</code> with <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> included in its <code>handleTypes</code> member, and the <code>pNext</code> contains an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>allocationSize</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
6798 },
6799 {
6800 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02386",
6801 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer&#8217;s <a href=\"#AHardwareBuffer\">AHardwareBuffer</a>::<code>usage</code> <strong class=\"purple\">must</strong> include at least one of <code>AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT</code> or <code>AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE</code>."
6802 },
6803 {
6804 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02387",
6805 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the format of <code>image</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code> or the format returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> in <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a>::<code>format</code> for the Android hardware buffer."
6806 },
6807 {
6808 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02388",
6809 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the width, height, and array layer dimensions of <code>image</code> and the Android hardware buffer&#8217;s <code>AHardwareBuffer_Desc</code> <strong class=\"purple\">must</strong> be identical."
6810 },
6811 {
6812 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02389",
6813 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer&#8217;s <a href=\"#AHardwareBuffer\">AHardwareBuffer</a>::<code>usage</code> includes <code>AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE</code>, the <code>image</code> <strong class=\"purple\">must</strong> have a complete mipmap chain."
6814 },
6815 {
6816 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02586",
6817 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer&#8217;s <a href=\"#AHardwareBuffer\">AHardwareBuffer</a>::<code>usage</code> does not include <code>AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE</code>, the <code>image</code> <strong class=\"purple\">must</strong> have exactly one mipmap level."
6818 },
6819 {
6820 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02390",
6821 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, each bit set in the usage of <code>image</code> <strong class=\"purple\">must</strong> be listed in <a href=\"#memory-external-android-hardware-buffer-usage\">AHardwareBuffer Usage Equivalence</a>, and if there is a corresponding <code>AHARDWAREBUFFER_USAGE</code> bit listed that bit <strong class=\"purple\">must</strong> be included in the Android hardware buffer&#8217;s <code>AHardwareBuffer_Desc</code>::<code>usage</code>."
6822 }
6823 ],
6824 "core": [
6825 {
6826 "vuid": "VUID-VkMemoryAllocateInfo-sType-sType",
6827 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO</code>"
6828 },
6829 {
6830 "vuid": "VUID-VkMemoryAllocateInfo-pNext-pNext",
6831 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>, <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryWin32HandleInfoKHR\">VkExportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a>, <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a>, <a href=\"#VkImportMemoryFdInfoKHR\">VkImportMemoryFdInfoKHR</a>, <a href=\"#VkImportMemoryHostPointerInfoEXT\">VkImportMemoryHostPointerInfoEXT</a>, <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a>, <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a>, <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>, or <a href=\"#VkMemoryPriorityAllocateInfoEXT\">VkMemoryPriorityAllocateInfoEXT</a>"
6832 },
6833 {
6834 "vuid": "VUID-VkMemoryAllocateInfo-sType-unique",
6835 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
6836 }
6837 ]
6838 },
6839 "VkMemoryDedicatedAllocateInfo": {
6840 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
6841 {
6842 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01432",
6843 "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>"
6844 },
6845 {
6846 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01433",
6847 "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"
6848 },
6849 {
6850 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01434",
6851 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> have been created without <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code> set in <code>VkImageCreateInfo</code>::<code>flags</code>"
6852 },
6853 {
6854 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01435",
6855 "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"
6856 },
6857 {
6858 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01436",
6859 "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>"
6860 },
6861 {
6862 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-sType-sType",
6863 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO</code>"
6864 },
6865 {
6866 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-parameter",
6867 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
6868 },
6869 {
6870 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-parameter",
6871 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
6872 },
6873 {
6874 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-commonparent",
6875 "text": " Both of <code>buffer</code>, and <code>image</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
6876 }
6877 ],
6878 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_win32)": [
6879 {
6880 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01876",
6881 "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."
6882 },
6883 {
6884 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01877",
6885 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> must be identical to the buffer associated with the imported memory."
6886 }
6887 ],
6888 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_fd)": [
6889 {
6890 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01878",
6891 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> must be identical to the image associated with the imported memory."
6892 },
6893 {
6894 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01879",
6895 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> must be identical to the buffer associated with the imported memory."
6896 }
6897 ],
6898 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_sampler_ycbcr_conversion)": [
6899 {
6900 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01797",
6901 "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>"
6902 }
6903 ]
6904 },
6905 "VkDedicatedAllocationMemoryAllocateInfoNV": {
6906 "(VK_NV_dedicated_allocation)": [
6907 {
6908 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00649",
6909 "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>"
6910 },
6911 {
6912 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00650",
6913 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the image <strong class=\"purple\">must</strong> have been created with <code>VkDedicatedAllocationImageCreateInfoNV</code>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>"
6914 },
6915 {
6916 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00651",
6917 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the buffer <strong class=\"purple\">must</strong> have been created with <code>VkDedicatedAllocationBufferCreateInfoNV</code>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>"
6918 },
6919 {
6920 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00652",
6921 "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"
6922 },
6923 {
6924 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00653",
6925 "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"
6926 },
6927 {
6928 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-sType-sType",
6929 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV</code>"
6930 },
6931 {
6932 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-parameter",
6933 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
6934 },
6935 {
6936 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-parameter",
6937 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
6938 },
6939 {
6940 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-commonparent",
6941 "text": " Both of <code>buffer</code>, and <code>image</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
6942 }
6943 ],
6944 "(VK_NV_dedicated_allocation)+(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd)": [
6945 {
6946 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00654",
6947 "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."
6948 },
6949 {
6950 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00655",
6951 "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."
6952 }
6953 ]
6954 },
6955 "VkMemoryPriorityAllocateInfoEXT": {
6956 "(VK_EXT_memory_priority)": [
6957 {
6958 "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-priority-02602",
6959 "text": " <code>priority</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive"
6960 },
6961 {
6962 "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-sType-sType",
6963 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT</code>"
6964 }
6965 ]
6966 },
6967 "VkExportMemoryAllocateInfo": {
6968 "(VK_VERSION_1_1,VK_KHR_external_memory)": [
6969 {
6970 "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-00656",
6971 "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>."
6972 },
6973 {
6974 "vuid": "VUID-VkExportMemoryAllocateInfo-sType-sType",
6975 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO</code>"
6976 },
6977 {
6978 "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-parameter",
6979 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
6980 }
6981 ]
6982 },
6983 "VkExportMemoryWin32HandleInfoKHR": {
6984 "(VK_KHR_external_memory_win32)": [
6985 {
6986 "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-handleTypes-00657",
6987 "text": " If <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>VkExportMemoryWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a>."
6988 },
6989 {
6990 "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-sType-sType",
6991 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
6992 },
6993 {
6994 "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-pAttributes-parameter",
6995 "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"
6996 }
6997 ]
6998 },
6999 "VkImportMemoryWin32HandleInfoKHR": {
7000 "(VK_KHR_external_memory_win32)": [
7001 {
7002 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658",
7003 "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>."
7004 },
7005 {
7006 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659",
7007 "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>."
7008 },
7009 {
7010 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00660",
7011 "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."
7012 },
7013 {
7014 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01439",
7015 "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>."
7016 },
7017 {
7018 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01440",
7019 "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>."
7020 },
7021 {
7022 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00661",
7023 "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>."
7024 },
7025 {
7026 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441",
7027 "text": " if <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>."
7028 },
7029 {
7030 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518",
7031 "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>."
7032 },
7033 {
7034 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-name-01519",
7035 "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>."
7036 },
7037 {
7038 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-sType-sType",
7039 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
7040 },
7041 {
7042 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter",
7043 "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"
7044 }
7045 ]
7046 },
7047 "vkGetMemoryWin32HandleKHR": {
7048 "(VK_KHR_external_memory_win32)": [
7049 {
7050 "vuid": "VUID-vkGetMemoryWin32HandleKHR-device-parameter",
7051 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7052 },
7053 {
7054 "vuid": "VUID-vkGetMemoryWin32HandleKHR-pGetWin32HandleInfo-parameter",
7055 "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryGetWin32HandleInfoKHR</code> structure"
7056 },
7057 {
7058 "vuid": "VUID-vkGetMemoryWin32HandleKHR-pHandle-parameter",
7059 "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
7060 }
7061 ]
7062 },
7063 "VkMemoryGetWin32HandleInfoKHR": {
7064 "(VK_KHR_external_memory_win32)": [
7065 {
7066 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00662",
7067 "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."
7068 },
7069 {
7070 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00663",
7071 "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>."
7072 },
7073 {
7074 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00664",
7075 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle."
7076 },
7077 {
7078 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType",
7079 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR</code>"
7080 },
7081 {
7082 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext",
7083 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7084 },
7085 {
7086 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter",
7087 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
7088 },
7089 {
7090 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter",
7091 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
7092 }
7093 ]
7094 },
7095 "vkGetMemoryWin32HandlePropertiesKHR": {
7096 "(VK_KHR_external_memory_win32)": [
7097 {
7098 "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handle-00665",
7099 "text": " <code>handle</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API."
7100 },
7101 {
7102 "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-00666",
7103 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be one of the handle types defined as opaque."
7104 },
7105 {
7106 "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter",
7107 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7108 },
7109 {
7110 "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter",
7111 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
7112 },
7113 {
7114 "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-pMemoryWin32HandleProperties-parameter",
7115 "text": " <code>pMemoryWin32HandleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryWin32HandlePropertiesKHR</code> structure"
7116 }
7117 ]
7118 },
7119 "VkMemoryWin32HandlePropertiesKHR": {
7120 "(VK_KHR_external_memory_win32)": [
7121 {
7122 "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-sType-sType",
7123 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR</code>"
7124 },
7125 {
7126 "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-pNext-pNext",
7127 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7128 }
7129 ]
7130 },
7131 "VkImportMemoryFdInfoKHR": {
7132 "(VK_KHR_external_memory_fd)": [
7133 {
7134 "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00667",
7135 "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>."
7136 },
7137 {
7138 "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-00668",
7139 "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>."
7140 },
7141 {
7142 "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00669",
7143 "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
7144 },
7145 {
7146 "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00670",
7147 "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>."
7148 },
7149 {
7150 "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01746",
7151 "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>."
7152 },
7153 {
7154 "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01520",
7155 "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>."
7156 },
7157 {
7158 "vuid": "VUID-VkImportMemoryFdInfoKHR-sType-sType",
7159 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR</code>"
7160 },
7161 {
7162 "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-parameter",
7163 "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"
7164 }
7165 ]
7166 },
7167 "vkGetMemoryFdKHR": {
7168 "(VK_KHR_external_memory_fd)": [
7169 {
7170 "vuid": "VUID-vkGetMemoryFdKHR-device-parameter",
7171 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7172 },
7173 {
7174 "vuid": "VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter",
7175 "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryGetFdInfoKHR</code> structure"
7176 },
7177 {
7178 "vuid": "VUID-vkGetMemoryFdKHR-pFd-parameter",
7179 "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value"
7180 }
7181 ]
7182 },
7183 "VkMemoryGetFdInfoKHR": {
7184 "(VK_KHR_external_memory_fd)": [
7185 {
7186 "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00671",
7187 "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."
7188 },
7189 {
7190 "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00672",
7191 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
7192 },
7193 {
7194 "vuid": "VUID-VkMemoryGetFdInfoKHR-sType-sType",
7195 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR</code>"
7196 },
7197 {
7198 "vuid": "VUID-VkMemoryGetFdInfoKHR-pNext-pNext",
7199 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7200 },
7201 {
7202 "vuid": "VUID-VkMemoryGetFdInfoKHR-memory-parameter",
7203 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
7204 },
7205 {
7206 "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-parameter",
7207 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
7208 }
7209 ]
7210 },
7211 "vkGetMemoryFdPropertiesKHR": {
7212 "(VK_KHR_external_memory_fd)": [
7213 {
7214 "vuid": "VUID-vkGetMemoryFdPropertiesKHR-fd-00673",
7215 "text": " <code>fd</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API."
7216 },
7217 {
7218 "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-00674",
7219 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>."
7220 },
7221 {
7222 "vuid": "VUID-vkGetMemoryFdPropertiesKHR-device-parameter",
7223 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7224 },
7225 {
7226 "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter",
7227 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
7228 },
7229 {
7230 "vuid": "VUID-vkGetMemoryFdPropertiesKHR-pMemoryFdProperties-parameter",
7231 "text": " <code>pMemoryFdProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryFdPropertiesKHR</code> structure"
7232 }
7233 ]
7234 },
7235 "VkMemoryFdPropertiesKHR": {
7236 "(VK_KHR_external_memory_fd)": [
7237 {
7238 "vuid": "VUID-VkMemoryFdPropertiesKHR-sType-sType",
7239 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR</code>"
7240 },
7241 {
7242 "vuid": "VUID-VkMemoryFdPropertiesKHR-pNext-pNext",
7243 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7244 }
7245 ]
7246 },
7247 "VkImportMemoryHostPointerInfoEXT": {
7248 "(VK_EXT_external_memory_host)": [
7249 {
7250 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01747",
7251 "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>"
7252 },
7253 {
7254 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01748",
7255 "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>"
7256 },
7257 {
7258 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749",
7259 "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
7260 },
7261 {
7262 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01750",
7263 "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"
7264 },
7265 {
7266 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01751",
7267 "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"
7268 },
7269 {
7270 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-sType-sType",
7271 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT</code>"
7272 },
7273 {
7274 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter",
7275 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
7276 }
7277 ]
7278 },
7279 "vkGetMemoryHostPointerPropertiesEXT": {
7280 "(VK_EXT_external_memory_host)": [
7281 {
7282 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01752",
7283 "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>"
7284 },
7285 {
7286 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753",
7287 "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
7288 },
7289 {
7290 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01754",
7291 "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"
7292 },
7293 {
7294 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01755",
7295 "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"
7296 },
7297 {
7298 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter",
7299 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7300 },
7301 {
7302 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter",
7303 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
7304 },
7305 {
7306 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter",
7307 "text": " <code>pMemoryHostPointerProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryHostPointerPropertiesEXT</code> structure"
7308 }
7309 ]
7310 },
7311 "VkMemoryHostPointerPropertiesEXT": {
7312 "(VK_EXT_external_memory_host)": [
7313 {
7314 "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-sType-sType",
7315 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT</code>"
7316 },
7317 {
7318 "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-pNext-pNext",
7319 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7320 }
7321 ]
7322 },
7323 "VkImportAndroidHardwareBufferInfoANDROID": {
7324 "(VK_ANDROID_external_memory_android_hardware_buffer)": [
7325 {
7326 "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01880",
7327 "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>."
7328 },
7329 {
7330 "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01881",
7331 "text": " If <code>buffer</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with <code>AHardwareBuffer_Desc</code>::<code>format</code> and <code>AHardwareBuffer_Desc</code>::<code>usage</code> compatible with Vulkan as described in <a href=\"#memory-external-android-hardware-buffer\">Android Hardware Buffers</a>."
7332 },
7333 {
7334 "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-sType-sType",
7335 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>"
7336 },
7337 {
7338 "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter",
7339 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>AHardwareBuffer</code> value"
7340 }
7341 ]
7342 },
7343 "vkGetMemoryAndroidHardwareBufferANDROID": {
7344 "(VK_ANDROID_external_memory_android_hardware_buffer)": [
7345 {
7346 "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter",
7347 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7348 },
7349 {
7350 "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter",
7351 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryGetAndroidHardwareBufferInfoANDROID</code> structure"
7352 },
7353 {
7354 "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pBuffer-parameter",
7355 "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid pointer to an <code>AHardwareBuffer</code> value"
7356 }
7357 ]
7358 },
7359 "VkMemoryGetAndroidHardwareBufferInfoANDROID": {
7360 "(VK_ANDROID_external_memory_android_hardware_buffer)": [
7361 {
7362 "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-handleTypes-01882",
7363 "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."
7364 },
7365 {
7366 "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-01883",
7367 "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>."
7368 },
7369 {
7370 "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-sType-sType",
7371 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>"
7372 },
7373 {
7374 "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-pNext",
7375 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7376 },
7377 {
7378 "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-memory-parameter",
7379 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
7380 }
7381 ]
7382 },
7383 "vkGetAndroidHardwareBufferPropertiesANDROID": {
7384 "(VK_ANDROID_external_memory_android_hardware_buffer)": [
7385 {
7386 "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884",
7387 "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>"
7388 },
7389 {
7390 "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter",
7391 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7392 },
7393 {
7394 "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter",
7395 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>AHardwareBuffer</code> value"
7396 },
7397 {
7398 "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-pProperties-parameter",
7399 "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkAndroidHardwareBufferPropertiesANDROID</code> structure"
7400 }
7401 ]
7402 },
7403 "VkAndroidHardwareBufferPropertiesANDROID": {
7404 "(VK_ANDROID_external_memory_android_hardware_buffer)": [
7405 {
7406 "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType",
7407 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID</code>"
7408 },
7409 {
7410 "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-pNext-pNext",
7411 "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>"
7412 }
7413 ]
7414 },
7415 "VkAndroidHardwareBufferFormatPropertiesANDROID": {
7416 "(VK_ANDROID_external_memory_android_hardware_buffer)": [
7417 {
7418 "vuid": "VUID-VkAndroidHardwareBufferFormatPropertiesANDROID-sType-sType",
7419 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID</code>"
7420 }
7421 ]
7422 },
7423 "VkExportMemoryAllocateInfoNV": {
7424 "(VK_NV_external_memory)": [
7425 {
7426 "vuid": "VUID-VkExportMemoryAllocateInfoNV-sType-sType",
7427 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV</code>"
7428 },
7429 {
7430 "vuid": "VUID-VkExportMemoryAllocateInfoNV-handleTypes-parameter",
7431 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
7432 }
7433 ]
7434 },
7435 "VkExportMemoryWin32HandleInfoNV": {
7436 "(VK_NV_external_memory_win32)": [
7437 {
7438 "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-sType-sType",
7439 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
7440 },
7441 {
7442 "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-pAttributes-parameter",
7443 "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"
7444 }
7445 ]
7446 },
7447 "VkImportMemoryWin32HandleInfoNV": {
7448 "(VK_NV_external_memory_win32)": [
7449 {
7450 "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-01327",
7451 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not have more than one bit set."
7452 },
7453 {
7454 "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handle-01328",
7455 "text": " <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle to memory, obtained as specified by <code>handleType</code>."
7456 },
7457 {
7458 "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-sType-sType",
7459 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
7460 },
7461 {
7462 "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-parameter",
7463 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
7464 }
7465 ]
7466 },
7467 "vkGetMemoryWin32HandleNV": {
7468 "(VK_NV_external_memory_win32)": [
7469 {
7470 "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-01326",
7471 "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>"
7472 },
7473 {
7474 "vuid": "VUID-vkGetMemoryWin32HandleNV-device-parameter",
7475 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7476 },
7477 {
7478 "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parameter",
7479 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
7480 },
7481 {
7482 "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-parameter",
7483 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
7484 },
7485 {
7486 "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-requiredbitmask",
7487 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
7488 },
7489 {
7490 "vuid": "VUID-vkGetMemoryWin32HandleNV-pHandle-parameter",
7491 "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
7492 },
7493 {
7494 "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parent",
7495 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7496 }
7497 ]
7498 },
7499 "VkMemoryAllocateFlagsInfo": {
7500 "(VK_VERSION_1_1,VK_KHR_device_group)": [
7501 {
7502 "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00675",
7503 "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."
7504 },
7505 {
7506 "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00676",
7507 "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
7508 },
7509 {
7510 "vuid": "VUID-VkMemoryAllocateFlagsInfo-sType-sType",
7511 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO</code>"
7512 },
7513 {
7514 "vuid": "VUID-VkMemoryAllocateFlagsInfo-flags-parameter",
7515 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMemoryAllocateFlagBits\">VkMemoryAllocateFlagBits</a> values"
7516 }
7517 ]
7518 },
7519 "vkFreeMemory": {
7520 "core": [
7521 {
7522 "vuid": "VUID-vkFreeMemory-memory-00677",
7523 "text": " All submitted commands that refer to <code>memory</code> (via images or buffers) <strong class=\"purple\">must</strong> have completed execution"
7524 },
7525 {
7526 "vuid": "VUID-vkFreeMemory-device-parameter",
7527 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7528 },
7529 {
7530 "vuid": "VUID-vkFreeMemory-memory-parameter",
7531 "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
7532 },
7533 {
7534 "vuid": "VUID-vkFreeMemory-pAllocator-parameter",
7535 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
7536 },
7537 {
7538 "vuid": "VUID-vkFreeMemory-memory-parent",
7539 "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>"
7540 }
7541 ]
7542 },
7543 "vkMapMemory": {
7544 "core": [
7545 {
7546 "vuid": "VUID-vkMapMemory-memory-00678",
7547 "text": " <code>memory</code> <strong class=\"purple\">must</strong> not be currently host mapped"
7548 },
7549 {
7550 "vuid": "VUID-vkMapMemory-offset-00679",
7551 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
7552 },
7553 {
7554 "vuid": "VUID-vkMapMemory-size-00680",
7555 "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>"
7556 },
7557 {
7558 "vuid": "VUID-vkMapMemory-size-00681",
7559 "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>"
7560 },
7561 {
7562 "vuid": "VUID-vkMapMemory-memory-00682",
7563 "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>"
7564 },
7565 {
7566 "vuid": "VUID-vkMapMemory-device-parameter",
7567 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7568 },
7569 {
7570 "vuid": "VUID-vkMapMemory-memory-parameter",
7571 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
7572 },
7573 {
7574 "vuid": "VUID-vkMapMemory-flags-zerobitmask",
7575 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
7576 },
7577 {
7578 "vuid": "VUID-vkMapMemory-ppData-parameter",
7579 "text": " <code>ppData</code> <strong class=\"purple\">must</strong> be a valid pointer to a pointer value"
7580 },
7581 {
7582 "vuid": "VUID-vkMapMemory-memory-parent",
7583 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7584 }
7585 ],
7586 "(VK_KHR_device_group)": [
7587 {
7588 "vuid": "VUID-vkMapMemory-memory-00683",
7589 "text": " <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated with multiple instances."
7590 }
7591 ]
7592 },
7593 "vkFlushMappedMemoryRanges": {
7594 "core": [
7595 {
7596 "vuid": "VUID-vkFlushMappedMemoryRanges-device-parameter",
7597 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7598 },
7599 {
7600 "vuid": "VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter",
7601 "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <code>VkMappedMemoryRange</code> structures"
7602 },
7603 {
7604 "vuid": "VUID-vkFlushMappedMemoryRanges-memoryRangeCount-arraylength",
7605 "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7606 }
7607 ]
7608 },
7609 "vkInvalidateMappedMemoryRanges": {
7610 "core": [
7611 {
7612 "vuid": "VUID-vkInvalidateMappedMemoryRanges-device-parameter",
7613 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7614 },
7615 {
7616 "vuid": "VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter",
7617 "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <code>VkMappedMemoryRange</code> structures"
7618 },
7619 {
7620 "vuid": "VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength",
7621 "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7622 }
7623 ]
7624 },
7625 "VkMappedMemoryRange": {
7626 "core": [
7627 {
7628 "vuid": "VUID-VkMappedMemoryRange-memory-00684",
7629 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped"
7630 },
7631 {
7632 "vuid": "VUID-VkMappedMemoryRange-size-00685",
7633 "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>"
7634 },
7635 {
7636 "vuid": "VUID-VkMappedMemoryRange-size-00686",
7637 "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>"
7638 },
7639 {
7640 "vuid": "VUID-VkMappedMemoryRange-size-01389",
7641 "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."
7642 },
7643 {
7644 "vuid": "VUID-VkMappedMemoryRange-offset-00687",
7645 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>"
7646 },
7647 {
7648 "vuid": "VUID-VkMappedMemoryRange-size-01390",
7649 "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>."
7650 },
7651 {
7652 "vuid": "VUID-VkMappedMemoryRange-sType-sType",
7653 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE</code>"
7654 },
7655 {
7656 "vuid": "VUID-VkMappedMemoryRange-pNext-pNext",
7657 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7658 },
7659 {
7660 "vuid": "VUID-VkMappedMemoryRange-memory-parameter",
7661 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
7662 }
7663 ]
7664 },
7665 "vkUnmapMemory": {
7666 "core": [
7667 {
7668 "vuid": "VUID-vkUnmapMemory-memory-00689",
7669 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped"
7670 },
7671 {
7672 "vuid": "VUID-vkUnmapMemory-device-parameter",
7673 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7674 },
7675 {
7676 "vuid": "VUID-vkUnmapMemory-memory-parameter",
7677 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
7678 },
7679 {
7680 "vuid": "VUID-vkUnmapMemory-memory-parent",
7681 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7682 }
7683 ]
7684 },
7685 "vkGetDeviceMemoryCommitment": {
7686 "core": [
7687 {
7688 "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-00690",
7689 "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>"
7690 },
7691 {
7692 "vuid": "VUID-vkGetDeviceMemoryCommitment-device-parameter",
7693 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7694 },
7695 {
7696 "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parameter",
7697 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
7698 },
7699 {
7700 "vuid": "VUID-vkGetDeviceMemoryCommitment-pCommittedMemoryInBytes-parameter",
7701 "text": " <code>pCommittedMemoryInBytes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceSize</code> value"
7702 },
7703 {
7704 "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parent",
7705 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
7706 }
7707 ]
7708 },
7709 "vkGetDeviceGroupPeerMemoryFeatures": {
7710 "(VK_VERSION_1_1,VK_KHR_device_group)": [
7711 {
7712 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-heapIndex-00691",
7713 "text": " <code>heapIndex</code> <strong class=\"purple\">must</strong> be less than <code>memoryHeapCount</code>"
7714 },
7715 {
7716 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00692",
7717 "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
7718 },
7719 {
7720 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-remoteDeviceIndex-00693",
7721 "text": " <code>remoteDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
7722 },
7723 {
7724 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00694",
7725 "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> not equal <code>remoteDeviceIndex</code>"
7726 },
7727 {
7728 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter",
7729 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7730 },
7731 {
7732 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-parameter",
7733 "text": " <code>pPeerMemoryFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPeerMemoryFeatureFlags\">VkPeerMemoryFeatureFlags</a> value"
7734 }
7735 ]
7736 },
7737 "vkCreateBuffer": {
7738 "core": [
7739 {
7740 "vuid": "VUID-vkCreateBuffer-flags-00911",
7741 "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>"
7742 },
7743 {
7744 "vuid": "VUID-vkCreateBuffer-device-parameter",
7745 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7746 },
7747 {
7748 "vuid": "VUID-vkCreateBuffer-pCreateInfo-parameter",
7749 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferCreateInfo</code> structure"
7750 },
7751 {
7752 "vuid": "VUID-vkCreateBuffer-pAllocator-parameter",
7753 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
7754 },
7755 {
7756 "vuid": "VUID-vkCreateBuffer-pBuffer-parameter",
7757 "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBuffer</code> handle"
7758 }
7759 ]
7760 },
7761 "VkBufferCreateInfo": {
7762 "core": [
7763 {
7764 "vuid": "VUID-VkBufferCreateInfo-size-00912",
7765 "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
7766 },
7767 {
7768 "vuid": "VUID-VkBufferCreateInfo-sharingMode-00913",
7769 "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"
7770 },
7771 {
7772 "vuid": "VUID-VkBufferCreateInfo-sharingMode-00914",
7773 "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>"
7774 },
7775 {
7776 "vuid": "VUID-VkBufferCreateInfo-flags-00915",
7777 "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>"
7778 },
7779 {
7780 "vuid": "VUID-VkBufferCreateInfo-flags-00916",
7781 "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>"
7782 },
7783 {
7784 "vuid": "VUID-VkBufferCreateInfo-flags-00917",
7785 "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>"
7786 },
7787 {
7788 "vuid": "VUID-VkBufferCreateInfo-flags-00918",
7789 "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>"
7790 },
7791 {
7792 "vuid": "VUID-VkBufferCreateInfo-sType-sType",
7793 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO</code>"
7794 },
7795 {
7796 "vuid": "VUID-VkBufferCreateInfo-pNext-pNext",
7797 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>, <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>, or <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>"
7798 },
7799 {
7800 "vuid": "VUID-VkBufferCreateInfo-sType-unique",
7801 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
7802 },
7803 {
7804 "vuid": "VUID-VkBufferCreateInfo-flags-parameter",
7805 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values"
7806 },
7807 {
7808 "vuid": "VUID-VkBufferCreateInfo-usage-parameter",
7809 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values"
7810 },
7811 {
7812 "vuid": "VUID-VkBufferCreateInfo-usage-requiredbitmask",
7813 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
7814 },
7815 {
7816 "vuid": "VUID-VkBufferCreateInfo-sharingMode-parameter",
7817 "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
7818 }
7819 ],
7820 "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
7821 {
7822 "vuid": "VUID-VkBufferCreateInfo-sharingMode-01391",
7823 "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>"
7824 }
7825 ],
7826 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
7827 {
7828 "vuid": "VUID-VkBufferCreateInfo-sharingMode-01419",
7829 "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>"
7830 }
7831 ],
7832 "(VK_VERSION_1_1,VK_KHR_external_memory)": [
7833 {
7834 "vuid": "VUID-VkBufferCreateInfo-pNext-00920",
7835 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalBufferProperties\">vkGetPhysicalDeviceExternalBufferProperties</a> with <code>pExternalBufferInfo</code>-&gt;<code>handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code>"
7836 }
7837 ],
7838 "(VK_VERSION_1_1)": [
7839 {
7840 "vuid": "VUID-VkBufferCreateInfo-flags-01887",
7841 "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>"
7842 },
7843 {
7844 "vuid": "VUID-VkBufferCreateInfo-None-01888",
7845 "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"
7846 }
7847 ],
7848 "(VK_NV_dedicated_allocation)": [
7849 {
7850 "vuid": "VUID-VkBufferCreateInfo-pNext-01571",
7851 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>, and the <code>dedicatedAllocation</code> member of the chained structure is <code>VK_TRUE</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>"
7852 }
7853 ],
7854 "(VK_EXT_buffer_device_address)": [
7855 {
7856 "vuid": "VUID-VkBufferCreateInfo-deviceAddress-02604",
7857 "text": " If <a href=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>::<code>deviceAddress</code> is not zero, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT</code>"
7858 },
7859 {
7860 "vuid": "VUID-VkBufferCreateInfo-flags-02605",
7861 "text": " If <code>flags</code> includes <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT</code>, the <a href=\"#features-bufferDeviceAddressCaptureReplay\">bufferDeviceAddressCaptureReplay</a> feature <strong class=\"purple\">must</strong> be enabled"
7862 },
7863 {
7864 "vuid": "VUID-VkBufferCreateInfo-usage-02606",
7865 "text": " If <code>usage</code> includes <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT</code>, the <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled"
7866 }
7867 ]
7868 },
7869 "VkDedicatedAllocationBufferCreateInfoNV": {
7870 "(VK_NV_dedicated_allocation)": [
7871 {
7872 "vuid": "VUID-VkDedicatedAllocationBufferCreateInfoNV-sType-sType",
7873 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV</code>"
7874 }
7875 ]
7876 },
7877 "VkExternalMemoryBufferCreateInfo": {
7878 "(VK_VERSION_1_1,VK_KHR_external_memory)": [
7879 {
7880 "vuid": "VUID-VkExternalMemoryBufferCreateInfo-sType-sType",
7881 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO</code>"
7882 },
7883 {
7884 "vuid": "VUID-VkExternalMemoryBufferCreateInfo-handleTypes-parameter",
7885 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
7886 }
7887 ]
7888 },
7889 "VkBufferDeviceAddressCreateInfoEXT": {
7890 "(VK_EXT_buffer_device_address)": [
7891 {
7892 "vuid": "VUID-VkBufferDeviceAddressCreateInfoEXT-sType-sType",
7893 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT</code>"
7894 }
7895 ]
7896 },
7897 "vkDestroyBuffer": {
7898 "core": [
7899 {
7900 "vuid": "VUID-vkDestroyBuffer-buffer-00922",
7901 "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"
7902 },
7903 {
7904 "vuid": "VUID-vkDestroyBuffer-buffer-00923",
7905 "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"
7906 },
7907 {
7908 "vuid": "VUID-vkDestroyBuffer-buffer-00924",
7909 "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>"
7910 },
7911 {
7912 "vuid": "VUID-vkDestroyBuffer-device-parameter",
7913 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7914 },
7915 {
7916 "vuid": "VUID-vkDestroyBuffer-buffer-parameter",
7917 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
7918 },
7919 {
7920 "vuid": "VUID-vkDestroyBuffer-pAllocator-parameter",
7921 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
7922 },
7923 {
7924 "vuid": "VUID-vkDestroyBuffer-buffer-parent",
7925 "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>"
7926 }
7927 ]
7928 },
7929 "vkCreateBufferView": {
7930 "core": [
7931 {
7932 "vuid": "VUID-vkCreateBufferView-device-parameter",
7933 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
7934 },
7935 {
7936 "vuid": "VUID-vkCreateBufferView-pCreateInfo-parameter",
7937 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferViewCreateInfo</code> structure"
7938 },
7939 {
7940 "vuid": "VUID-vkCreateBufferView-pAllocator-parameter",
7941 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
7942 },
7943 {
7944 "vuid": "VUID-vkCreateBufferView-pView-parameter",
7945 "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBufferView</code> handle"
7946 }
7947 ]
7948 },
7949 "VkBufferViewCreateInfo": {
7950 "core": [
7951 {
7952 "vuid": "VUID-VkBufferViewCreateInfo-offset-00925",
7953 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
7954 },
7955 {
7956 "vuid": "VUID-VkBufferViewCreateInfo-offset-02749",
7957 "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>"
7958 },
7959 {
7960 "vuid": "VUID-VkBufferViewCreateInfo-range-00928",
7961 "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>"
7962 },
7963 {
7964 "vuid": "VUID-VkBufferViewCreateInfo-range-00929",
7965 "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>"
7966 },
7967 {
7968 "vuid": "VUID-VkBufferViewCreateInfo-range-00930",
7969 "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> divided by the texel block size of <code>format</code>, multiplied by the number of texels per texel block for that format (as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table), <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>"
7970 },
7971 {
7972 "vuid": "VUID-VkBufferViewCreateInfo-offset-00931",
7973 "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>"
7974 },
7975 {
7976 "vuid": "VUID-VkBufferViewCreateInfo-buffer-00932",
7977 "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>"
7978 },
7979 {
7980 "vuid": "VUID-VkBufferViewCreateInfo-buffer-00933",
7981 "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>"
7982 },
7983 {
7984 "vuid": "VUID-VkBufferViewCreateInfo-buffer-00934",
7985 "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>"
7986 },
7987 {
7988 "vuid": "VUID-VkBufferViewCreateInfo-buffer-00935",
7989 "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"
7990 },
7991 {
7992 "vuid": "VUID-VkBufferViewCreateInfo-sType-sType",
7993 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO</code>"
7994 },
7995 {
7996 "vuid": "VUID-VkBufferViewCreateInfo-pNext-pNext",
7997 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
7998 },
7999 {
8000 "vuid": "VUID-VkBufferViewCreateInfo-flags-zerobitmask",
8001 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
8002 },
8003 {
8004 "vuid": "VUID-VkBufferViewCreateInfo-buffer-parameter",
8005 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
8006 },
8007 {
8008 "vuid": "VUID-VkBufferViewCreateInfo-format-parameter",
8009 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
8010 }
8011 ],
8012 "(VK_EXT_texel_buffer_alignment)": [
8013 {
8014 "vuid": "VUID-VkBufferViewCreateInfo-buffer-02750",
8015 "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"
8016 },
8017 {
8018 "vuid": "VUID-VkBufferViewCreateInfo-buffer-02751",
8019 "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"
8020 }
8021 ]
8022 },
8023 "vkDestroyBufferView": {
8024 "core": [
8025 {
8026 "vuid": "VUID-vkDestroyBufferView-bufferView-00936",
8027 "text": " All submitted commands that refer to <code>bufferView</code> <strong class=\"purple\">must</strong> have completed execution"
8028 },
8029 {
8030 "vuid": "VUID-vkDestroyBufferView-bufferView-00937",
8031 "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"
8032 },
8033 {
8034 "vuid": "VUID-vkDestroyBufferView-bufferView-00938",
8035 "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>"
8036 },
8037 {
8038 "vuid": "VUID-vkDestroyBufferView-device-parameter",
8039 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8040 },
8041 {
8042 "vuid": "VUID-vkDestroyBufferView-bufferView-parameter",
8043 "text": " If <code>bufferView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>bufferView</code> <strong class=\"purple\">must</strong> be a valid <code>VkBufferView</code> handle"
8044 },
8045 {
8046 "vuid": "VUID-vkDestroyBufferView-pAllocator-parameter",
8047 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
8048 },
8049 {
8050 "vuid": "VUID-vkDestroyBufferView-bufferView-parent",
8051 "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>"
8052 }
8053 ]
8054 },
8055 "vkCreateImage": {
8056 "core": [
8057 {
8058 "vuid": "VUID-vkCreateImage-flags-00939",
8059 "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>"
8060 },
8061 {
8062 "vuid": "VUID-vkCreateImage-device-parameter",
8063 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8064 },
8065 {
8066 "vuid": "VUID-vkCreateImage-pCreateInfo-parameter",
8067 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageCreateInfo</code> structure"
8068 },
8069 {
8070 "vuid": "VUID-vkCreateImage-pAllocator-parameter",
8071 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
8072 },
8073 {
8074 "vuid": "VUID-vkCreateImage-pImage-parameter",
8075 "text": " <code>pImage</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImage</code> handle"
8076 }
8077 ]
8078 },
8079 "VkImageCreateInfo": {
8080 "core": [
8081 {
8082 "vuid": "VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251",
8083 "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>."
8084 },
8085 {
8086 "vuid": "VUID-VkImageCreateInfo-sharingMode-00941",
8087 "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"
8088 },
8089 {
8090 "vuid": "VUID-VkImageCreateInfo-sharingMode-00942",
8091 "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>"
8092 },
8093 {
8094 "vuid": "VUID-VkImageCreateInfo-extent-00944",
8095 "text": " <code>extent</code>::<code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
8096 },
8097 {
8098 "vuid": "VUID-VkImageCreateInfo-extent-00945",
8099 "text": " <code>extent</code>::<code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
8100 },
8101 {
8102 "vuid": "VUID-VkImageCreateInfo-extent-00946",
8103 "text": " <code>extent</code>::<code>depth</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
8104 },
8105 {
8106 "vuid": "VUID-VkImageCreateInfo-mipLevels-00947",
8107 "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8108 },
8109 {
8110 "vuid": "VUID-VkImageCreateInfo-arrayLayers-00948",
8111 "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8112 },
8113 {
8114 "vuid": "VUID-VkImageCreateInfo-flags-00949",
8115 "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>"
8116 },
8117 {
8118 "vuid": "VUID-VkImageCreateInfo-extent-02252",
8119 "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>)."
8120 },
8121 {
8122 "vuid": "VUID-VkImageCreateInfo-extent-02253",
8123 "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>)."
8124 },
8125 {
8126 "vuid": "VUID-VkImageCreateInfo-extent-02254",
8127 "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>)."
8128 },
8129 {
8130 "vuid": "VUID-VkImageCreateInfo-imageType-00954",
8131 "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"
8132 },
8133 {
8134 "vuid": "VUID-VkImageCreateInfo-imageType-00956",
8135 "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>"
8136 },
8137 {
8138 "vuid": "VUID-VkImageCreateInfo-imageType-00957",
8139 "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>"
8140 },
8141 {
8142 "vuid": "VUID-VkImageCreateInfo-mipLevels-00958",
8143 "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>."
8144 },
8145 {
8146 "vuid": "VUID-VkImageCreateInfo-mipLevels-02255",
8147 "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>)."
8148 },
8149 {
8150 "vuid": "VUID-VkImageCreateInfo-arrayLayers-02256",
8151 "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>)."
8152 },
8153 {
8154 "vuid": "VUID-VkImageCreateInfo-imageType-00961",
8155 "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be <code>1</code>."
8156 },
8157 {
8158 "vuid": "VUID-VkImageCreateInfo-samples-02257",
8159 "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>,"
8160 },
8161 {
8162 "vuid": "VUID-VkImageCreateInfo-usage-00963",
8163 "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"
8164 },
8165 {
8166 "vuid": "VUID-VkImageCreateInfo-usage-00964",
8167 "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>"
8168 },
8169 {
8170 "vuid": "VUID-VkImageCreateInfo-usage-00965",
8171 "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>"
8172 },
8173 {
8174 "vuid": "VUID-VkImageCreateInfo-usage-00966",
8175 "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>."
8176 },
8177 {
8178 "vuid": "VUID-VkImageCreateInfo-samples-02258",
8179 "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>)."
8180 },
8181 {
8182 "vuid": "VUID-VkImageCreateInfo-usage-00968",
8183 "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>"
8184 },
8185 {
8186 "vuid": "VUID-VkImageCreateInfo-flags-00969",
8187 "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>"
8188 },
8189 {
8190 "vuid": "VUID-VkImageCreateInfo-flags-01924",
8191 "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>"
8192 },
8193 {
8194 "vuid": "VUID-VkImageCreateInfo-imageType-00970",
8195 "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>"
8196 },
8197 {
8198 "vuid": "VUID-VkImageCreateInfo-imageType-00971",
8199 "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>"
8200 },
8201 {
8202 "vuid": "VUID-VkImageCreateInfo-imageType-00972",
8203 "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>"
8204 },
8205 {
8206 "vuid": "VUID-VkImageCreateInfo-imageType-00973",
8207 "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>"
8208 },
8209 {
8210 "vuid": "VUID-VkImageCreateInfo-imageType-00974",
8211 "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>"
8212 },
8213 {
8214 "vuid": "VUID-VkImageCreateInfo-imageType-00975",
8215 "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>"
8216 },
8217 {
8218 "vuid": "VUID-VkImageCreateInfo-imageType-00976",
8219 "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>"
8220 },
8221 {
8222 "vuid": "VUID-VkImageCreateInfo-flags-00987",
8223 "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>"
8224 },
8225 {
8226 "vuid": "VUID-VkImageCreateInfo-None-01925",
8227 "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"
8228 },
8229 {
8230 "vuid": "VUID-VkImageCreateInfo-initialLayout-00993",
8231 "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>."
8232 },
8233 {
8234 "vuid": "VUID-VkImageCreateInfo-sType-sType",
8235 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO</code>"
8236 },
8237 {
8238 "vuid": "VUID-VkImageCreateInfo-pNext-pNext",
8239 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>, <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>, <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a>, <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a>, <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a>, <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, or <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>"
8240 },
8241 {
8242 "vuid": "VUID-VkImageCreateInfo-sType-unique",
8243 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
8244 },
8245 {
8246 "vuid": "VUID-VkImageCreateInfo-flags-parameter",
8247 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
8248 },
8249 {
8250 "vuid": "VUID-VkImageCreateInfo-imageType-parameter",
8251 "text": " <code>imageType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
8252 },
8253 {
8254 "vuid": "VUID-VkImageCreateInfo-format-parameter",
8255 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
8256 },
8257 {
8258 "vuid": "VUID-VkImageCreateInfo-samples-parameter",
8259 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
8260 },
8261 {
8262 "vuid": "VUID-VkImageCreateInfo-tiling-parameter",
8263 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
8264 },
8265 {
8266 "vuid": "VUID-VkImageCreateInfo-usage-parameter",
8267 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
8268 },
8269 {
8270 "vuid": "VUID-VkImageCreateInfo-usage-requiredbitmask",
8271 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
8272 },
8273 {
8274 "vuid": "VUID-VkImageCreateInfo-sharingMode-parameter",
8275 "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
8276 },
8277 {
8278 "vuid": "VUID-VkImageCreateInfo-initialLayout-parameter",
8279 "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
8280 }
8281 ],
8282 "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
8283 {
8284 "vuid": "VUID-VkImageCreateInfo-sharingMode-01392",
8285 "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>"
8286 }
8287 ],
8288 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
8289 {
8290 "vuid": "VUID-VkImageCreateInfo-sharingMode-01420",
8291 "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>"
8292 }
8293 ],
8294 "!(VK_ANDROID_external_memory_android_hardware_buffer)": [
8295 {
8296 "vuid": "VUID-VkImageCreateInfo-format-00943",
8297 "text": " <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>"
8298 }
8299 ],
8300 "(VK_ANDROID_external_memory_android_hardware_buffer)": [
8301 {
8302 "vuid": "VUID-VkImageCreateInfo-pNext-01974",
8303 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, and its member <code>externalFormat</code> is non-zero the <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>."
8304 },
8305 {
8306 "vuid": "VUID-VkImageCreateInfo-pNext-01975",
8307 "text": " If the <code>pNext</code> chain does not contain an instance of <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, or does and its member <code>externalFormat</code> is <code>0</code> the <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>."
8308 },
8309 {
8310 "vuid": "VUID-VkImageCreateInfo-pNext-02393",
8311 "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>."
8312 },
8313 {
8314 "vuid": "VUID-VkImageCreateInfo-pNext-02394",
8315 "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>."
8316 },
8317 {
8318 "vuid": "VUID-VkImageCreateInfo-pNext-02396",
8319 "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>."
8320 },
8321 {
8322 "vuid": "VUID-VkImageCreateInfo-pNext-02397",
8323 "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>."
8324 },
8325 {
8326 "vuid": "VUID-VkImageCreateInfo-pNext-02398",
8327 "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>."
8328 }
8329 ],
8330 "(VK_EXT_fragment_density_map)": [
8331 {
8332 "vuid": "VUID-VkImageCreateInfo-flags-02557",
8333 "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>"
8334 },
8335 {
8336 "vuid": "VUID-VkImageCreateInfo-samples-02558",
8337 "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>"
8338 },
8339 {
8340 "vuid": "VUID-VkImageCreateInfo-usage-02559",
8341 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to \\(\\lceil{\\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\\rceil\\)"
8342 },
8343 {
8344 "vuid": "VUID-VkImageCreateInfo-usage-02560",
8345 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to \\(\\lceil{\\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\\rceil\\)"
8346 },
8347 {
8348 "vuid": "VUID-VkImageCreateInfo-flags-02565",
8349 "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>"
8350 },
8351 {
8352 "vuid": "VUID-VkImageCreateInfo-flags-02566",
8353 "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>"
8354 },
8355 {
8356 "vuid": "VUID-VkImageCreateInfo-flags-02567",
8357 "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>"
8358 },
8359 {
8360 "vuid": "VUID-VkImageCreateInfo-flags-02568",
8361 "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>"
8362 }
8363 ],
8364 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
8365 {
8366 "vuid": "VUID-VkImageCreateInfo-flags-00950",
8367 "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>"
8368 }
8369 ],
8370 "(VK_VERSION_1_1)": [
8371 {
8372 "vuid": "VUID-VkImageCreateInfo-flags-01890",
8373 "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>."
8374 },
8375 {
8376 "vuid": "VUID-VkImageCreateInfo-None-01891",
8377 "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."
8378 }
8379 ],
8380 "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_NV_external_memory)": [
8381 {
8382 "vuid": "VUID-VkImageCreateInfo-pNext-00988",
8383 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, it <strong class=\"purple\">must</strong> not contain an instance of <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>."
8384 }
8385 ],
8386 "(VK_VERSION_1_1,VK_KHR_external_memory)": [
8387 {
8388 "vuid": "VUID-VkImageCreateInfo-pNext-00990",
8389 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure, and with an instance of <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> in the <code>pNext</code> chain, with a <code>handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code>"
8390 }
8391 ],
8392 "(VK_NV_external_memory+VK_NV_external_memory_capabilities)": [
8393 {
8394 "vuid": "VUID-VkImageCreateInfo-pNext-00991",
8395 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalImageFormatPropertiesNV\">VkExternalImageFormatPropertiesNV</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalImageFormatPropertiesNV\">vkGetPhysicalDeviceExternalImageFormatPropertiesNV</a> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure, and with <code>externalHandleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>::<code>handleTypes</code>"
8396 }
8397 ],
8398 "(VK_VERSION_1_1,VK_KHR_device_group)": [
8399 {
8400 "vuid": "VUID-VkImageCreateInfo-physicalDeviceCount-01421",
8401 "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>"
8402 },
8403 {
8404 "vuid": "VUID-VkImageCreateInfo-flags-02259",
8405 "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>."
8406 }
8407 ],
8408 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
8409 {
8410 "vuid": "VUID-VkImageCreateInfo-flags-01572",
8411 "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>."
8412 },
8413 {
8414 "vuid": "VUID-VkImageCreateInfo-flags-01573",
8415 "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>."
8416 }
8417 ],
8418 "(VK_VERSION_1_1,VK_KHR_external_memory,VK_NV_external_memory)": [
8419 {
8420 "vuid": "VUID-VkImageCreateInfo-pNext-01443",
8421 "text": " If the <code>pNext</code> chain includes a ifdef::VK_VERSION_1_1,VK_KHR_external_memory[<a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>]"
8422 }
8423 ],
8424 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
8425 {
8426 "vuid": "VUID-VkImageCreateInfo-format-02561",
8427 "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, then <code>mipLevels</code> <strong class=\"purple\">must</strong> be 1"
8428 },
8429 {
8430 "vuid": "VUID-VkImageCreateInfo-format-02562",
8431 "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>samples</code> must be <code>VK_SAMPLE_COUNT_1_BIT</code>"
8432 },
8433 {
8434 "vuid": "VUID-VkImageCreateInfo-format-02563",
8435 "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>"
8436 },
8437 {
8438 "vuid": "VUID-VkImageCreateInfo-imageCreateFormatFeatures-02260",
8439 "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>."
8440 },
8441 {
8442 "vuid": "VUID-VkImageCreateInfo-format-01577",
8443 "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>"
8444 }
8445 ],
8446 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_ycbcr_image_arrays)": [
8447 {
8448 "vuid": "VUID-VkImageCreateInfo-format-02653",
8449 "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, and the <code>ycbcrImageArrays</code> feature is not enabled, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be 1"
8450 }
8451 ],
8452 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_ycbcr_image_arrays)": [
8453 {
8454 "vuid": "VUID-VkImageCreateInfo-format-02564",
8455 "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be 1"
8456 }
8457 ],
8458 "(VK_EXT_image_drm_format_modifier)": [
8459 {
8460 "vuid": "VUID-VkImageCreateInfo-tiling-02261",
8461 "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain exactly one of <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a> or <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a>."
8462 },
8463 {
8464 "vuid": "VUID-VkImageCreateInfo-pNext-02262",
8465 "text": " If the <code>pNext</code> chain contains <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a> or <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a>, then <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>."
8466 },
8467 {
8468 "vuid": "VUID-VkImageCreateInfo-tiling-02353",
8469 "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a> with non-zero <code>viewFormatCount</code>."
8470 }
8471 ],
8472 "(VK_EXT_sample_locations)": [
8473 {
8474 "vuid": "VUID-VkImageCreateInfo-flags-01533",
8475 "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"
8476 }
8477 ],
8478 "(VK_EXT_separate_stencil_usage)": [
8479 {
8480 "vuid": "VUID-VkImageCreateInfo-format-02534",
8481 "text": " If <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, then its <code>stencilUsage</code> member <strong class=\"purple\">must</strong> only include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> if <code>usage</code> also includes it"
8482 },
8483 {
8484 "vuid": "VUID-VkImageCreateInfo-format-02535",
8485 "text": " If <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, then its <code>stencilUsage</code> member <strong class=\"purple\">must</strong> only include <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code> if <code>usage</code> also includes it"
8486 },
8487 {
8488 "vuid": "VUID-VkImageCreateInfo-Format-02536",
8489 "text": " If <code>Format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> with its <code>stencilUsage</code> member including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>"
8490 },
8491 {
8492 "vuid": "VUID-VkImageCreateInfo-format-02537",
8493 "text": " If <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> with its <code>stencilUsage</code> member including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>"
8494 },
8495 {
8496 "vuid": "VUID-VkImageCreateInfo-format-02538",
8497 "text": " If the <a href=\"#features-shaderStorageImageMultisample\">multisampled storage images</a> feature is not enabled, <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> with its <code>stencilUsage</code> including <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>"
8498 }
8499 ],
8500 "(VK_NV_corner_sampled_image)": [
8501 {
8502 "vuid": "VUID-VkImageCreateInfo-flags-02050",
8503 "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>"
8504 },
8505 {
8506 "vuid": "VUID-VkImageCreateInfo-flags-02051",
8507 "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"
8508 },
8509 {
8510 "vuid": "VUID-VkImageCreateInfo-flags-02052",
8511 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> and <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>extent</code>::<code>width</code> and <code>extent</code>::<code>height</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
8512 },
8513 {
8514 "vuid": "VUID-VkImageCreateInfo-flags-02053",
8515 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> and <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>extent</code>::<code>width</code>, <code>extent</code>::<code>height</code>, and <code>extent</code>::<code>depth</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
8516 }
8517 ],
8518 "(VK_NV_shading_rate_image)": [
8519 {
8520 "vuid": "VUID-VkImageCreateInfo-imageType-02082",
8521 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>."
8522 },
8523 {
8524 "vuid": "VUID-VkImageCreateInfo-samples-02083",
8525 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>."
8526 },
8527 {
8528 "vuid": "VUID-VkImageCreateInfo-tiling-02084",
8529 "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>."
8530 }
8531 ]
8532 },
8533 "VkImageStencilUsageCreateInfoEXT": {
8534 "(VK_EXT_separate_stencil_usage)": [
8535 {
8536 "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-02539",
8537 "text": " If <code>stencilUsage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, then bits other than <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not be set"
8538 },
8539 {
8540 "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-sType-sType",
8541 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT</code>"
8542 },
8543 {
8544 "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-parameter",
8545 "text": " <code>stencilUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
8546 },
8547 {
8548 "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-requiredbitmask",
8549 "text": " <code>stencilUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
8550 }
8551 ]
8552 },
8553 "VkDedicatedAllocationImageCreateInfoNV": {
8554 "(VK_NV_dedicated_allocation)": [
8555 {
8556 "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-dedicatedAllocation-00994",
8557 "text": " If <code>dedicatedAllocation</code> is <code>VK_TRUE</code>, <code>VkImageCreateInfo</code>::<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>"
8558 },
8559 {
8560 "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-sType-sType",
8561 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV</code>"
8562 }
8563 ]
8564 },
8565 "VkExternalMemoryImageCreateInfo": {
8566 "(VK_VERSION_1_1,VK_KHR_external_memory)": [
8567 {
8568 "vuid": "VUID-VkExternalMemoryImageCreateInfo-sType-sType",
8569 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO</code>"
8570 },
8571 {
8572 "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-parameter",
8573 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
8574 },
8575 {
8576 "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-requiredbitmask",
8577 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
8578 }
8579 ]
8580 },
8581 "VkExternalMemoryImageCreateInfoNV": {
8582 "(VK_NV_external_memory)": [
8583 {
8584 "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-sType-sType",
8585 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV</code>"
8586 },
8587 {
8588 "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-handleTypes-parameter",
8589 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
8590 }
8591 ]
8592 },
8593 "VkExternalFormatANDROID": {
8594 "(VK_ANDROID_external_memory_android_hardware_buffer)": [
8595 {
8596 "vuid": "VUID-VkExternalFormatANDROID-externalFormat-01894",
8597 "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>"
8598 },
8599 {
8600 "vuid": "VUID-VkExternalFormatANDROID-sType-sType",
8601 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID</code>"
8602 }
8603 ]
8604 },
8605 "VkImageSwapchainCreateInfoKHR": {
8606 "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
8607 {
8608 "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995",
8609 "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"
8610 },
8611 {
8612 "vuid": "VUID-VkImageSwapchainCreateInfoKHR-sType-sType",
8613 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR</code>"
8614 },
8615 {
8616 "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-parameter",
8617 "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
8618 }
8619 ]
8620 },
8621 "VkImageFormatListCreateInfoKHR": {
8622 "(VK_KHR_image_format_list)": [
8623 {
8624 "vuid": "VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01578",
8625 "text": " If <code>viewFormatCount</code> is not <code>0</code>, all of the formats in the <code>pViewFormats</code> array <strong class=\"purple\">must</strong> be compatible with the format specified in the <code>format</code> field of <code>VkImageCreateInfo</code>, as described in the <a href=\"#formats-compatibility\">compatibility table</a>."
8626 },
8627 {
8628 "vuid": "VUID-VkImageFormatListCreateInfoKHR-flags-01579",
8629 "text": " If <code>VkImageCreateInfo</code>::<code>flags</code> does not contain <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, <code>viewFormatCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>."
8630 },
8631 {
8632 "vuid": "VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01580",
8633 "text": " If <code>viewFormatCount</code> is not <code>0</code>, <code>VkImageCreateInfo</code>::<code>format</code> <strong class=\"purple\">must</strong> be in <code>pViewFormats</code>."
8634 },
8635 {
8636 "vuid": "VUID-VkImageFormatListCreateInfoKHR-sType-sType",
8637 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR</code>"
8638 },
8639 {
8640 "vuid": "VUID-VkImageFormatListCreateInfoKHR-pViewFormats-parameter",
8641 "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"
8642 }
8643 ]
8644 },
8645 "VkImageDrmFormatModifierListCreateInfoEXT": {
8646 "(VK_EXT_image_drm_format_modifier)": [
8647 {
8648 "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-02263",
8649 "text": " Each <em>modifier</em> in <code>pDrmFormatModifiers</code> must be compatible with the parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> and its <code>pNext</code> chain, as determined by querying <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> extended with <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>."
8650 },
8651 {
8652 "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-sType-sType",
8653 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT</code>"
8654 },
8655 {
8656 "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-parameter",
8657 "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"
8658 },
8659 {
8660 "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-drmFormatModifierCount-arraylength",
8661 "text": " <code>drmFormatModifierCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
8662 }
8663 ]
8664 },
8665 "VkImageDrmFormatModifierExplicitCreateInfoEXT": {
8666 "(VK_EXT_image_drm_format_modifier)": [
8667 {
8668 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifier-02264",
8669 "text": " <code>drmFormatModifier</code> must be compatible with the parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> and its <code>pNext</code> chain, as determined by querying <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> extended with <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>."
8670 },
8671 {
8672 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifierPlaneCount-02265",
8673 "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>."
8674 },
8675 {
8676 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267",
8677 "text": " For each element of <code>pPlaneLayouts</code>, <code>size</code> <strong class=\"purple\">must</strong> be 0"
8678 },
8679 {
8680 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268",
8681 "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."
8682 },
8683 {
8684 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269",
8685 "text": " For each element of <code>pPlaneLayouts</code>, <code>depthPitch</code> <strong class=\"purple\">must</strong> be 0 if <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>extent</code>::<code>depth</code> is 1."
8686 },
8687 {
8688 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-sType-sType",
8689 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT</code>"
8690 },
8691 {
8692 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-pPlaneLayouts-parameter",
8693 "text": " If <code>drmFormatModifierPlaneCount</code> is not <code>0</code>, <code>pPlaneLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>drmFormatModifierPlaneCount</code> <code>VkSubresourceLayout</code> structures"
8694 }
8695 ]
8696 },
8697 "vkGetImageSubresourceLayout": {
8698 "!(VK_EXT_image_drm_format_modifier)": [
8699 {
8700 "vuid": "VUID-vkGetImageSubresourceLayout-image-00996",
8701 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>tiling</code> equal to <code>VK_IMAGE_TILING_LINEAR</code>"
8702 }
8703 ],
8704 "(VK_EXT_image_drm_format_modifier)": [
8705 {
8706 "vuid": "VUID-vkGetImageSubresourceLayout-image-02270",
8707 "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>"
8708 },
8709 {
8710 "vuid": "VUID-vkGetImageSubresourceLayout-tiling-02271",
8711 "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\"><code>drmFormatModifierPlaneCount</code></a> associated with the image&#8217;s <a href=\"#VkImageCreateInfo\"><code>format</code></a> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\"><code>drmFormatModifier</code></a>."
8712 }
8713 ],
8714 "core": [
8715 {
8716 "vuid": "VUID-vkGetImageSubresourceLayout-aspectMask-00997",
8717 "text": " The <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set"
8718 },
8719 {
8720 "vuid": "VUID-vkGetImageSubresourceLayout-mipLevel-01716",
8721 "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"
8722 },
8723 {
8724 "vuid": "VUID-vkGetImageSubresourceLayout-arrayLayer-01717",
8725 "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"
8726 },
8727 {
8728 "vuid": "VUID-vkGetImageSubresourceLayout-device-parameter",
8729 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8730 },
8731 {
8732 "vuid": "VUID-vkGetImageSubresourceLayout-image-parameter",
8733 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
8734 },
8735 {
8736 "vuid": "VUID-vkGetImageSubresourceLayout-pSubresource-parameter",
8737 "text": " <code>pSubresource</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageSubresource</code> structure"
8738 },
8739 {
8740 "vuid": "VUID-vkGetImageSubresourceLayout-pLayout-parameter",
8741 "text": " <code>pLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSubresourceLayout</code> structure"
8742 },
8743 {
8744 "vuid": "VUID-vkGetImageSubresourceLayout-image-parent",
8745 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8746 }
8747 ],
8748 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
8749 {
8750 "vuid": "VUID-vkGetImageSubresourceLayout-format-01581",
8751 "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>"
8752 },
8753 {
8754 "vuid": "VUID-vkGetImageSubresourceLayout-format-01582",
8755 "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>"
8756 }
8757 ],
8758 "(VK_ANDROID_external_memory_android_hardware_buffer)": [
8759 {
8760 "vuid": "VUID-vkGetImageSubresourceLayout-image-01895",
8761 "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."
8762 }
8763 ]
8764 },
8765 "VkImageSubresource": {
8766 "core": [
8767 {
8768 "vuid": "VUID-VkImageSubresource-aspectMask-parameter",
8769 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
8770 },
8771 {
8772 "vuid": "VUID-VkImageSubresource-aspectMask-requiredbitmask",
8773 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
8774 }
8775 ]
8776 },
8777 "vkGetImageDrmFormatModifierPropertiesEXT": {
8778 "(VK_EXT_image_drm_format_modifier)": [
8779 {
8780 "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-02272",
8781 "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>."
8782 },
8783 {
8784 "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter",
8785 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8786 },
8787 {
8788 "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parameter",
8789 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
8790 },
8791 {
8792 "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-pProperties-parameter",
8793 "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageDrmFormatModifierPropertiesEXT</code> structure"
8794 },
8795 {
8796 "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parent",
8797 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
8798 }
8799 ]
8800 },
8801 "VkImageDrmFormatModifierPropertiesEXT": {
8802 "(VK_EXT_image_drm_format_modifier)": [
8803 {
8804 "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-sType-sType",
8805 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT</code>"
8806 },
8807 {
8808 "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-pNext-pNext",
8809 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
8810 }
8811 ]
8812 },
8813 "vkDestroyImage": {
8814 "core": [
8815 {
8816 "vuid": "VUID-vkDestroyImage-image-01000",
8817 "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"
8818 },
8819 {
8820 "vuid": "VUID-vkDestroyImage-image-01001",
8821 "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"
8822 },
8823 {
8824 "vuid": "VUID-vkDestroyImage-image-01002",
8825 "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>"
8826 },
8827 {
8828 "vuid": "VUID-vkDestroyImage-device-parameter",
8829 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8830 },
8831 {
8832 "vuid": "VUID-vkDestroyImage-image-parameter",
8833 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
8834 },
8835 {
8836 "vuid": "VUID-vkDestroyImage-pAllocator-parameter",
8837 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
8838 },
8839 {
8840 "vuid": "VUID-vkDestroyImage-image-parent",
8841 "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>"
8842 }
8843 ]
8844 },
8845 "vkCreateImageView": {
8846 "core": [
8847 {
8848 "vuid": "VUID-vkCreateImageView-device-parameter",
8849 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
8850 },
8851 {
8852 "vuid": "VUID-vkCreateImageView-pCreateInfo-parameter",
8853 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageViewCreateInfo</code> structure"
8854 },
8855 {
8856 "vuid": "VUID-vkCreateImageView-pAllocator-parameter",
8857 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
8858 },
8859 {
8860 "vuid": "VUID-vkCreateImageView-pView-parameter",
8861 "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageView</code> handle"
8862 }
8863 ]
8864 },
8865 "VkImageViewCreateInfo": {
8866 "core": [
8867 {
8868 "vuid": "VUID-VkImageViewCreateInfo-image-01003",
8869 "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>"
8870 },
8871 {
8872 "vuid": "VUID-VkImageViewCreateInfo-viewType-01004",
8873 "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>"
8874 },
8875 {
8876 "vuid": "VUID-VkImageViewCreateInfo-None-02273",
8877 "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."
8878 },
8879 {
8880 "vuid": "VUID-VkImageViewCreateInfo-usage-02274",
8881 "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>."
8882 },
8883 {
8884 "vuid": "VUID-VkImageViewCreateInfo-usage-02275",
8885 "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>."
8886 },
8887 {
8888 "vuid": "VUID-VkImageViewCreateInfo-usage-02276",
8889 "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>."
8890 },
8891 {
8892 "vuid": "VUID-VkImageViewCreateInfo-usage-02277",
8893 "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>."
8894 },
8895 {
8896 "vuid": "VUID-VkImageViewCreateInfo-usage-02652",
8897 "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>."
8898 },
8899 {
8900 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01478",
8901 "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"
8902 },
8903 {
8904 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01718",
8905 "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"
8906 },
8907 {
8908 "vuid": "VUID-VkImageViewCreateInfo-image-01018",
8909 "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>"
8910 },
8911 {
8912 "vuid": "VUID-VkImageViewCreateInfo-image-01020",
8913 "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"
8914 },
8915 {
8916 "vuid": "VUID-VkImageViewCreateInfo-subResourceRange-01021",
8917 "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>"
8918 },
8919 {
8920 "vuid": "VUID-VkImageViewCreateInfo-sType-sType",
8921 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO</code>"
8922 },
8923 {
8924 "vuid": "VUID-VkImageViewCreateInfo-pNext-pNext",
8925 "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>"
8926 },
8927 {
8928 "vuid": "VUID-VkImageViewCreateInfo-sType-unique",
8929 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
8930 },
8931 {
8932 "vuid": "VUID-VkImageViewCreateInfo-flags-parameter",
8933 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageViewCreateFlagBits\">VkImageViewCreateFlagBits</a> values"
8934 },
8935 {
8936 "vuid": "VUID-VkImageViewCreateInfo-image-parameter",
8937 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
8938 },
8939 {
8940 "vuid": "VUID-VkImageViewCreateInfo-viewType-parameter",
8941 "text": " <code>viewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value"
8942 },
8943 {
8944 "vuid": "VUID-VkImageViewCreateInfo-format-parameter",
8945 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
8946 },
8947 {
8948 "vuid": "VUID-VkImageViewCreateInfo-components-parameter",
8949 "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <code>VkComponentMapping</code> structure"
8950 },
8951 {
8952 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-parameter",
8953 "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceRange</code> structure"
8954 }
8955 ],
8956 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
8957 {
8958 "vuid": "VUID-VkImageViewCreateInfo-image-01005",
8959 "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>"
8960 },
8961 {
8962 "vuid": "VUID-VkImageViewCreateInfo-image-01482",
8963 "text": " If <code>image</code> is not a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, or <code>viewType</code> is not <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
8964 },
8965 {
8966 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01483",
8967 "text": " If <code>subresourceRange</code>::<code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>image</code> is not a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, or <code>viewType</code> is not <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>subresourceRange</code>::<code>baseArrayLayer</code> &#43; <code>subresourceRange</code>::<code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
8968 },
8969 {
8970 "vuid": "VUID-VkImageViewCreateInfo-image-02724",
8971 "text": " If <code>image</code> is a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the 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>."
8972 },
8973 {
8974 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-02725",
8975 "text": " If <code>subresourceRange</code>::<code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>image</code> is a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>subresourceRange</code>::<code>baseArrayLayer</code> &#43; <code>subresourceRange</code>::<code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the 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>."
8976 }
8977 ],
8978 "!(VK_EXT_fragment_density_map)+!(VK_NV_shading_rate_image)": [
8979 {
8980 "vuid": "VUID-VkImageViewCreateInfo-image-01007",
8981 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>"
8982 }
8983 ],
8984 "!(VK_EXT_fragment_density_map)+(VK_NV_shading_rate_image)": [
8985 {
8986 "vuid": "VUID-VkImageViewCreateInfo-image-02085",
8987 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>"
8988 }
8989 ],
8990 "(VK_EXT_fragment_density_map)+!(VK_NV_shading_rate_image)": [
8991 {
8992 "vuid": "VUID-VkImageViewCreateInfo-image-02569",
8993 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>"
8994 }
8995 ],
8996 "(VK_EXT_fragment_density_map)+(VK_NV_shading_rate_image)": [
8997 {
8998 "vuid": "VUID-VkImageViewCreateInfo-image-02570",
8999 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, or <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>"
9000 }
9001 ],
9002 "(VK_EXT_fragment_density_map)": [
9003 {
9004 "vuid": "VUID-VkImageViewCreateInfo-image-02571",
9005 "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>"
9006 },
9007 {
9008 "vuid": "VUID-VkImageViewCreateInfo-flags-02572",
9009 "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>"
9010 },
9011 {
9012 "vuid": "VUID-VkImageViewCreateInfo-image-02573",
9013 "text": " If <a href=\"#features-fragmentdensitymapdynamic\">dynamic fragment density map</a> feature is not enabled and <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain any of <code>VK_IMAGE_CREATE_PROTECTED_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>"
9014 }
9015 ],
9016 "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
9017 {
9018 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01480",
9019 "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"
9020 },
9021 {
9022 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01719",
9023 "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"
9024 }
9025 ],
9026 "(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9027 {
9028 "vuid": "VUID-VkImageViewCreateInfo-image-01759",
9029 "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>"
9030 }
9031 ],
9032 "!(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9033 {
9034 "vuid": "VUID-VkImageViewCreateInfo-image-01760",
9035 "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>"
9036 }
9037 ],
9038 "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9039 {
9040 "vuid": "VUID-VkImageViewCreateInfo-image-01761",
9041 "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>"
9042 }
9043 ],
9044 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
9045 {
9046 "vuid": "VUID-VkImageViewCreateInfo-image-01583",
9047 "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>."
9048 },
9049 {
9050 "vuid": "VUID-VkImageViewCreateInfo-image-01584",
9051 "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>."
9052 }
9053 ],
9054 "(VK_KHR_image_format_list)": [
9055 {
9056 "vuid": "VUID-VkImageViewCreateInfo-pNext-01585",
9057 "text": " If a <code>VkImageFormatListCreateInfoKHR</code> structure was included in the <code>pNext</code> chain of the <code>VkImageCreateInfo</code> struct used when creating <code>image</code> and the <code>viewFormatCount</code> field of <code>VkImageFormatListCreateInfoKHR</code> is not zero then <code>format</code> <strong class=\"purple\">must</strong> be one of the formats in <code>VkImageFormatListCreateInfoKHR</code>::<code>pViewFormats</code>."
9058 }
9059 ],
9060 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9061 {
9062 "vuid": "VUID-VkImageViewCreateInfo-image-01586",
9063 "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>"
9064 },
9065 {
9066 "vuid": "VUID-VkImageViewCreateInfo-image-01762",
9067 "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>"
9068 },
9069 {
9070 "vuid": "VUID-VkImageViewCreateInfo-pNext-01970",
9071 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> with a <code>conversion</code> value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, all members of <code>components</code> <strong class=\"purple\">must</strong> have the value <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>."
9072 }
9073 ],
9074 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9075 {
9076 "vuid": "VUID-VkImageViewCreateInfo-image-01019",
9077 "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>"
9078 }
9079 ],
9080 "(VK_ANDROID_external_memory_android_hardware_buffer)": [
9081 {
9082 "vuid": "VUID-VkImageViewCreateInfo-image-02399",
9083 "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>."
9084 },
9085 {
9086 "vuid": "VUID-VkImageViewCreateInfo-image-02400",
9087 "text": " If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">external format</a>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> with a <code>conversion</code> object created with the same external format as <code>image</code>."
9088 },
9089 {
9090 "vuid": "VUID-VkImageViewCreateInfo-image-02401",
9091 "text": " If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">external format</a>, all members of <code>components</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>."
9092 }
9093 ],
9094 "(VK_NV_shading_rate_image)": [
9095 {
9096 "vuid": "VUID-VkImageViewCreateInfo-image-02086",
9097 "text": " If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>"
9098 },
9099 {
9100 "vuid": "VUID-VkImageViewCreateInfo-image-02087",
9101 "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>"
9102 }
9103 ],
9104 "(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_EXT_separate_stencil_usage)": [
9105 {
9106 "vuid": "VUID-VkImageViewCreateInfo-pNext-02661",
9107 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</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>."
9108 }
9109 ],
9110 "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_separate_stencil_usage)": [
9111 {
9112 "vuid": "VUID-VkImageViewCreateInfo-pNext-02662",
9113 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a>, and <code>image</code> was not created with an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> 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>"
9114 },
9115 {
9116 "vuid": "VUID-VkImageViewCreateInfo-pNext-02663",
9117 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a>, <code>image</code> was created with an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> 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=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> structure used to create <code>image</code>"
9118 },
9119 {
9120 "vuid": "VUID-VkImageViewCreateInfo-pNext-02664",
9121 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a>, <code>image</code> was created with an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> 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> instance <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>"
9122 }
9123 ]
9124 },
9125 "VkImageViewUsageCreateInfo": {
9126 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
9127 {
9128 "vuid": "VUID-VkImageViewUsageCreateInfo-sType-sType",
9129 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO</code>"
9130 },
9131 {
9132 "vuid": "VUID-VkImageViewUsageCreateInfo-usage-parameter",
9133 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
9134 },
9135 {
9136 "vuid": "VUID-VkImageViewUsageCreateInfo-usage-requiredbitmask",
9137 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
9138 }
9139 ]
9140 },
9141 "VkImageSubresourceRange": {
9142 "core": [
9143 {
9144 "vuid": "VUID-VkImageSubresourceRange-levelCount-01720",
9145 "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>"
9146 },
9147 {
9148 "vuid": "VUID-VkImageSubresourceRange-layerCount-01721",
9149 "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>"
9150 },
9151 {
9152 "vuid": "VUID-VkImageSubresourceRange-aspectMask-parameter",
9153 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
9154 },
9155 {
9156 "vuid": "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask",
9157 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
9158 }
9159 ],
9160 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9161 {
9162 "vuid": "VUID-VkImageSubresourceRange-aspectMask-01670",
9163 "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>"
9164 }
9165 ],
9166 "(VK_EXT_image_drm_format_modifier)": [
9167 {
9168 "vuid": "VUID-VkImageSubresourceRange-aspectMask-02278",
9169 "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>."
9170 }
9171 ]
9172 },
9173 "VkComponentMapping": {
9174 "core": [
9175 {
9176 "vuid": "VUID-VkComponentMapping-r-parameter",
9177 "text": " <code>r</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
9178 },
9179 {
9180 "vuid": "VUID-VkComponentMapping-g-parameter",
9181 "text": " <code>g</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
9182 },
9183 {
9184 "vuid": "VUID-VkComponentMapping-b-parameter",
9185 "text": " <code>b</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
9186 },
9187 {
9188 "vuid": "VUID-VkComponentMapping-a-parameter",
9189 "text": " <code>a</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
9190 }
9191 ]
9192 },
9193 "VkImageViewASTCDecodeModeEXT": {
9194 "(VK_EXT_astc_decode_mode)": [
9195 {
9196 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02230",
9197 "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>"
9198 },
9199 {
9200 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231",
9201 "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>"
9202 },
9203 {
9204 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02232",
9205 "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"
9206 },
9207 {
9208 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-format-02233",
9209 "text": " <code>format</code> of the image view <strong class=\"purple\">must</strong> be one of <code>VK_FORMAT_ASTC_4x4_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_4x4_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_5x4_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_5x4_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_5x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_5x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_6x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_6x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_6x6_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_6x6_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_8x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_8x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_8x6_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_8x6_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_8x8_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_8x8_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x6_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x6_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x8_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x8_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x10_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x10_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_12x10_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_12x10_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_12x12_UNORM_BLOCK</code>, or <code>VK_FORMAT_ASTC_12x12_SRGB_BLOCK</code>"
9210 },
9211 {
9212 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-sType-sType",
9213 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT</code>"
9214 },
9215 {
9216 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-parameter",
9217 "text": " <code>decodeMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
9218 }
9219 ]
9220 },
9221 "vkDestroyImageView": {
9222 "core": [
9223 {
9224 "vuid": "VUID-vkDestroyImageView-imageView-01026",
9225 "text": " All submitted commands that refer to <code>imageView</code> <strong class=\"purple\">must</strong> have completed execution"
9226 },
9227 {
9228 "vuid": "VUID-vkDestroyImageView-imageView-01027",
9229 "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"
9230 },
9231 {
9232 "vuid": "VUID-vkDestroyImageView-imageView-01028",
9233 "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>"
9234 },
9235 {
9236 "vuid": "VUID-vkDestroyImageView-device-parameter",
9237 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9238 },
9239 {
9240 "vuid": "VUID-vkDestroyImageView-imageView-parameter",
9241 "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> handle"
9242 },
9243 {
9244 "vuid": "VUID-vkDestroyImageView-pAllocator-parameter",
9245 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
9246 },
9247 {
9248 "vuid": "VUID-vkDestroyImageView-imageView-parent",
9249 "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>"
9250 }
9251 ]
9252 },
9253 "vkGetImageViewHandleNVX": {
9254 "(VK_NVX_image_view_handle)": [
9255 {
9256 "vuid": "VUID-vkGetImageViewHandleNVX-device-parameter",
9257 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9258 },
9259 {
9260 "vuid": "VUID-vkGetImageViewHandleNVX-pInfo-parameter",
9261 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageViewHandleInfoNVX</code> structure"
9262 }
9263 ]
9264 },
9265 "VkImageViewHandleInfoNVX": {
9266 "(VK_NVX_image_view_handle)": [
9267 {
9268 "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-02654",
9269 "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>"
9270 },
9271 {
9272 "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-02655",
9273 "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>"
9274 },
9275 {
9276 "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02656",
9277 "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"
9278 },
9279 {
9280 "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02657",
9281 "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"
9282 },
9283 {
9284 "vuid": "VUID-VkImageViewHandleInfoNVX-sType-sType",
9285 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX</code>"
9286 },
9287 {
9288 "vuid": "VUID-VkImageViewHandleInfoNVX-pNext-pNext",
9289 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9290 },
9291 {
9292 "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-parameter",
9293 "text": " <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> handle"
9294 },
9295 {
9296 "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-parameter",
9297 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
9298 },
9299 {
9300 "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-parameter",
9301 "text": " If <code>sampler</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampler</code> handle"
9302 },
9303 {
9304 "vuid": "VUID-VkImageViewHandleInfoNVX-commonparent",
9305 "text": " Both of <code>imageView</code>, and <code>sampler</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
9306 }
9307 ]
9308 },
9309 "vkGetBufferMemoryRequirements": {
9310 "core": [
9311 {
9312 "vuid": "VUID-vkGetBufferMemoryRequirements-device-parameter",
9313 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9314 },
9315 {
9316 "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parameter",
9317 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
9318 },
9319 {
9320 "vuid": "VUID-vkGetBufferMemoryRequirements-pMemoryRequirements-parameter",
9321 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements</code> structure"
9322 },
9323 {
9324 "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parent",
9325 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9326 }
9327 ]
9328 },
9329 "vkGetImageMemoryRequirements": {
9330 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9331 {
9332 "vuid": "VUID-vkGetImageMemoryRequirements-image-01588",
9333 "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag set"
9334 }
9335 ],
9336 "core": [
9337 {
9338 "vuid": "VUID-vkGetImageMemoryRequirements-device-parameter",
9339 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9340 },
9341 {
9342 "vuid": "VUID-vkGetImageMemoryRequirements-image-parameter",
9343 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
9344 },
9345 {
9346 "vuid": "VUID-vkGetImageMemoryRequirements-pMemoryRequirements-parameter",
9347 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements</code> structure"
9348 },
9349 {
9350 "vuid": "VUID-vkGetImageMemoryRequirements-image-parent",
9351 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9352 }
9353 ]
9354 },
9355 "vkGetBufferMemoryRequirements2": {
9356 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
9357 {
9358 "vuid": "VUID-vkGetBufferMemoryRequirements2-device-parameter",
9359 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9360 },
9361 {
9362 "vuid": "VUID-vkGetBufferMemoryRequirements2-pInfo-parameter",
9363 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferMemoryRequirementsInfo2</code> structure"
9364 },
9365 {
9366 "vuid": "VUID-vkGetBufferMemoryRequirements2-pMemoryRequirements-parameter",
9367 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements2</code> structure"
9368 }
9369 ]
9370 },
9371 "VkBufferMemoryRequirementsInfo2": {
9372 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
9373 {
9374 "vuid": "VUID-VkBufferMemoryRequirementsInfo2-sType-sType",
9375 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2</code>"
9376 },
9377 {
9378 "vuid": "VUID-VkBufferMemoryRequirementsInfo2-pNext-pNext",
9379 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
9380 },
9381 {
9382 "vuid": "VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter",
9383 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
9384 }
9385 ]
9386 },
9387 "vkGetImageMemoryRequirements2": {
9388 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
9389 {
9390 "vuid": "VUID-vkGetImageMemoryRequirements2-device-parameter",
9391 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9392 },
9393 {
9394 "vuid": "VUID-vkGetImageMemoryRequirements2-pInfo-parameter",
9395 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageMemoryRequirementsInfo2</code> structure"
9396 },
9397 {
9398 "vuid": "VUID-vkGetImageMemoryRequirements2-pMemoryRequirements-parameter",
9399 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements2</code> structure"
9400 }
9401 ]
9402 },
9403 "VkImageMemoryRequirementsInfo2": {
9404 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9405 {
9406 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01589",
9407 "text": " If <code>image</code> was created with a <em>multi-planar</em> format and the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
9408 },
9409 {
9410 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01590",
9411 "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
9412 }
9413 ],
9414 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
9415 {
9416 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02279",
9417 "text": " If <code>image</code> was created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> and with <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
9418 },
9419 {
9420 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02280",
9421 "text": " If <code>image</code> was created with a single-plane format and with any <code>tiling</code> other than <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
9422 }
9423 ],
9424 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_image_drm_format_modifier)": [
9425 {
9426 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01591",
9427 "text": " If <code>image</code> was created with a single-plane format, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
9428 }
9429 ],
9430 "(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)": [
9431 {
9432 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01897",
9433 "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."
9434 }
9435 ],
9436 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
9437 {
9438 "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-sType",
9439 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2</code>"
9440 },
9441 {
9442 "vuid": "VUID-VkImageMemoryRequirementsInfo2-pNext-pNext",
9443 "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>"
9444 },
9445 {
9446 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-parameter",
9447 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
9448 }
9449 ]
9450 },
9451 "VkImagePlaneMemoryRequirementsInfo": {
9452 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9453 {
9454 "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281",
9455 "text": " If the image&#8217;s tiling is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>format plane</em> for the image. (That is, for a two-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and for a three-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>)."
9456 },
9457 {
9458 "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-sType-sType",
9459 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO</code>"
9460 },
9461 {
9462 "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter",
9463 "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value"
9464 }
9465 ],
9466 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
9467 {
9468 "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282",
9469 "text": " If the image&#8217;s tiling is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>memory plane</em> for the image. (That is, <code>aspectMask</code> <strong class=\"purple\">must</strong> specify a plane index that is less than the <a href=\"#VkDrmFormatModifierPropertiesEXT\"><code>drmFormatModifierPlaneCount</code></a> associated with the image&#8217;s <a href=\"#VkImageCreateInfo\"><code>format</code></a> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\"><code>drmFormatModifier</code></a>.)"
9470 }
9471 ]
9472 },
9473 "VkMemoryRequirements2": {
9474 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
9475 {
9476 "vuid": "VUID-VkMemoryRequirements2-sType-sType",
9477 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2</code>"
9478 },
9479 {
9480 "vuid": "VUID-VkMemoryRequirements2-pNext-pNext",
9481 "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>"
9482 }
9483 ]
9484 },
9485 "VkMemoryDedicatedRequirements": {
9486 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9487 {
9488 "vuid": "VUID-VkMemoryDedicatedRequirements-sType-sType",
9489 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS</code>"
9490 }
9491 ]
9492 },
9493 "vkBindBufferMemory": {
9494 "core": [
9495 {
9496 "vuid": "VUID-vkBindBufferMemory-buffer-01029",
9497 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
9498 },
9499 {
9500 "vuid": "VUID-vkBindBufferMemory-buffer-01030",
9501 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
9502 },
9503 {
9504 "vuid": "VUID-vkBindBufferMemory-memoryOffset-01031",
9505 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
9506 },
9507 {
9508 "vuid": "VUID-vkBindBufferMemory-memory-01035",
9509 "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>"
9510 },
9511 {
9512 "vuid": "VUID-vkBindBufferMemory-memoryOffset-01036",
9513 "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>"
9514 },
9515 {
9516 "vuid": "VUID-vkBindBufferMemory-size-01037",
9517 "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>"
9518 },
9519 {
9520 "vuid": "VUID-vkBindBufferMemory-device-parameter",
9521 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9522 },
9523 {
9524 "vuid": "VUID-vkBindBufferMemory-buffer-parameter",
9525 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
9526 },
9527 {
9528 "vuid": "VUID-vkBindBufferMemory-memory-parameter",
9529 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
9530 },
9531 {
9532 "vuid": "VUID-vkBindBufferMemory-buffer-parent",
9533 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9534 },
9535 {
9536 "vuid": "VUID-vkBindBufferMemory-memory-parent",
9537 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9538 }
9539 ],
9540 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9541 {
9542 "vuid": "VUID-vkBindBufferMemory-buffer-01444",
9543 "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>"
9544 },
9545 {
9546 "vuid": "VUID-vkBindBufferMemory-memory-01508",
9547 "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code>, and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
9548 }
9549 ],
9550 "(VK_VERSION_1_1)": [
9551 {
9552 "vuid": "VUID-vkBindBufferMemory-None-01898",
9553 "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>"
9554 },
9555 {
9556 "vuid": "VUID-vkBindBufferMemory-None-01899",
9557 "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>"
9558 }
9559 ],
9560 "(VK_NV_dedicated_allocation)": [
9561 {
9562 "vuid": "VUID-vkBindBufferMemory-buffer-01038",
9563 "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"
9564 }
9565 ],
9566 "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9567 {
9568 "vuid": "VUID-vkBindBufferMemory-buffer-01039",
9569 "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"
9570 }
9571 ],
9572 "(VK_VERSION_1_1,VK_KHR_external_memory)": [
9573 {
9574 "vuid": "VUID-vkBindBufferMemory-memory-02726",
9575 "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"
9576 },
9577 {
9578 "vuid": "VUID-vkBindBufferMemory-memory-02727",
9579 "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"
9580 }
9581 ]
9582 },
9583 "vkBindBufferMemory2": {
9584 "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
9585 {
9586 "vuid": "VUID-vkBindBufferMemory2-device-parameter",
9587 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9588 },
9589 {
9590 "vuid": "VUID-vkBindBufferMemory2-pBindInfos-parameter",
9591 "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindBufferMemoryInfo</code> structures"
9592 },
9593 {
9594 "vuid": "VUID-vkBindBufferMemory2-bindInfoCount-arraylength",
9595 "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9596 }
9597 ]
9598 },
9599 "VkBindBufferMemoryInfo": {
9600 "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
9601 {
9602 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01593",
9603 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
9604 },
9605 {
9606 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01594",
9607 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
9608 },
9609 {
9610 "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01595",
9611 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
9612 },
9613 {
9614 "vuid": "VUID-VkBindBufferMemoryInfo-memory-01599",
9615 "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>"
9616 },
9617 {
9618 "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01600",
9619 "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>"
9620 },
9621 {
9622 "vuid": "VUID-VkBindBufferMemoryInfo-size-01601",
9623 "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>"
9624 },
9625 {
9626 "vuid": "VUID-VkBindBufferMemoryInfo-sType-sType",
9627 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO</code>"
9628 },
9629 {
9630 "vuid": "VUID-VkBindBufferMemoryInfo-pNext-pNext",
9631 "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>"
9632 },
9633 {
9634 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-parameter",
9635 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
9636 },
9637 {
9638 "vuid": "VUID-VkBindBufferMemoryInfo-memory-parameter",
9639 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
9640 },
9641 {
9642 "vuid": "VUID-VkBindBufferMemoryInfo-commonparent",
9643 "text": " Both of <code>buffer</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
9644 }
9645 ],
9646 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9647 {
9648 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01602",
9649 "text": " If <code>buffer</code> requires a dedicated allocation(as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
9650 },
9651 {
9652 "vuid": "VUID-VkBindBufferMemoryInfo-memory-01900",
9653 "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
9654 }
9655 ],
9656 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [
9657 {
9658 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01603",
9659 "text": " If <code>buffer</code> was created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>buffer</code> equal to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
9660 }
9661 ],
9662 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9663 {
9664 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01604",
9665 "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"
9666 }
9667 ],
9668 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
9669 {
9670 "vuid": "VUID-VkBindBufferMemoryInfo-pNext-01605",
9671 "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>, all instances of <code>memory</code> specified by <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated"
9672 }
9673 ],
9674 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)": [
9675 {
9676 "vuid": "VUID-VkBindBufferMemoryInfo-handleTypes-02791",
9677 "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"
9678 },
9679 {
9680 "vuid": "VUID-VkBindBufferMemoryInfo-memory-02792",
9681 "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"
9682 }
9683 ]
9684 },
9685 "VkBindBufferMemoryDeviceGroupInfo": {
9686 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
9687 {
9688 "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-deviceIndexCount-01606",
9689 "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
9690 },
9691 {
9692 "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-01607",
9693 "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
9694 },
9695 {
9696 "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-sType-sType",
9697 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO</code>"
9698 },
9699 {
9700 "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-parameter",
9701 "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"
9702 }
9703 ]
9704 },
9705 "vkBindImageMemory": {
9706 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9707 {
9708 "vuid": "VUID-vkBindImageMemory-image-01608",
9709 "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set."
9710 }
9711 ],
9712 "core": [
9713 {
9714 "vuid": "VUID-vkBindImageMemory-image-01044",
9715 "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
9716 },
9717 {
9718 "vuid": "VUID-vkBindImageMemory-image-01045",
9719 "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
9720 },
9721 {
9722 "vuid": "VUID-vkBindImageMemory-memoryOffset-01046",
9723 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
9724 },
9725 {
9726 "vuid": "VUID-vkBindImageMemory-memory-01047",
9727 "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>"
9728 },
9729 {
9730 "vuid": "VUID-vkBindImageMemory-memoryOffset-01048",
9731 "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>"
9732 },
9733 {
9734 "vuid": "VUID-vkBindImageMemory-size-01049",
9735 "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
9736 },
9737 {
9738 "vuid": "VUID-vkBindImageMemory-device-parameter",
9739 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9740 },
9741 {
9742 "vuid": "VUID-vkBindImageMemory-image-parameter",
9743 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
9744 },
9745 {
9746 "vuid": "VUID-vkBindImageMemory-memory-parameter",
9747 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
9748 },
9749 {
9750 "vuid": "VUID-vkBindImageMemory-image-parent",
9751 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9752 },
9753 {
9754 "vuid": "VUID-vkBindImageMemory-memory-parent",
9755 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
9756 }
9757 ],
9758 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9759 {
9760 "vuid": "VUID-vkBindImageMemory-image-01445",
9761 "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>"
9762 }
9763 ],
9764 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
9765 {
9766 "vuid": "VUID-vkBindImageMemory-memory-01509",
9767 "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
9768 }
9769 ],
9770 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
9771 {
9772 "vuid": "VUID-vkBindImageMemory-memory-02628",
9773 "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
9774 },
9775 {
9776 "vuid": "VUID-vkBindImageMemory-memory-02629",
9777 "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <code>VkImageCreateInfo</code>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created."
9778 }
9779 ],
9780 "(VK_VERSION_1_1)": [
9781 {
9782 "vuid": "VUID-vkBindImageMemory-None-01901",
9783 "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>"
9784 },
9785 {
9786 "vuid": "VUID-vkBindImageMemory-None-01902",
9787 "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>"
9788 }
9789 ],
9790 "(VK_NV_dedicated_allocation)": [
9791 {
9792 "vuid": "VUID-vkBindImageMemory-image-01050",
9793 "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"
9794 }
9795 ],
9796 "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9797 {
9798 "vuid": "VUID-vkBindImageMemory-image-01051",
9799 "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"
9800 }
9801 ],
9802 "(VK_VERSION_1_1,VK_KHR_external_memory)": [
9803 {
9804 "vuid": "VUID-vkBindImageMemory-memory-02728",
9805 "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"
9806 },
9807 {
9808 "vuid": "VUID-vkBindImageMemory-memory-02729",
9809 "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"
9810 }
9811 ]
9812 },
9813 "vkBindImageMemory2": {
9814 "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
9815 {
9816 "vuid": "VUID-vkBindImageMemory2-device-parameter",
9817 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
9818 },
9819 {
9820 "vuid": "VUID-vkBindImageMemory2-pBindInfos-parameter",
9821 "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindImageMemoryInfo</code> structures"
9822 },
9823 {
9824 "vuid": "VUID-vkBindImageMemory2-bindInfoCount-arraylength",
9825 "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
9826 }
9827 ]
9828 },
9829 "VkBindImageMemoryInfo": {
9830 "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
9831 {
9832 "vuid": "VUID-VkBindImageMemoryInfo-image-01609",
9833 "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
9834 },
9835 {
9836 "vuid": "VUID-VkBindImageMemoryInfo-image-01610",
9837 "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
9838 },
9839 {
9840 "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01611",
9841 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
9842 },
9843 {
9844 "vuid": "VUID-VkBindImageMemoryInfo-sType-sType",
9845 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO</code>"
9846 },
9847 {
9848 "vuid": "VUID-VkBindImageMemoryInfo-pNext-pNext",
9849 "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>"
9850 },
9851 {
9852 "vuid": "VUID-VkBindImageMemoryInfo-sType-unique",
9853 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
9854 },
9855 {
9856 "vuid": "VUID-VkBindImageMemoryInfo-image-parameter",
9857 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
9858 },
9859 {
9860 "vuid": "VUID-VkBindImageMemoryInfo-commonparent",
9861 "text": " Both of <code>image</code>, and <code>memory</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
9862 }
9863 ],
9864 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9865 {
9866 "vuid": "VUID-VkBindImageMemoryInfo-memory-01612",
9867 "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>"
9868 },
9869 {
9870 "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01613",
9871 "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>"
9872 },
9873 {
9874 "vuid": "VUID-VkBindImageMemoryInfo-memory-01614",
9875 "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>"
9876 }
9877 ],
9878 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
9879 {
9880 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01615",
9881 "text": " If the <code>pNext</code> chain does not include an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>"
9882 },
9883 {
9884 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01616",
9885 "text": " If the <code>pNext</code> chain does not include an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>"
9886 },
9887 {
9888 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01617",
9889 "text": " If the <code>pNext</code> chain does not include an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code>"
9890 },
9891 {
9892 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01618",
9893 "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> bit set."
9894 },
9895 {
9896 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01619",
9897 "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and the correct <code>planeAspect</code> for this plane in the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> structure attached to the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a>&#8217;s <code>pNext</code> chain"
9898 },
9899 {
9900 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01620",
9901 "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and the correct <code>planeAspect</code> for this plane in the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> structure attached to the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a>&#8217;s <code>pNext</code> chain"
9902 },
9903 {
9904 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01621",
9905 "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code> and the correct <code>planeAspect</code> for this plane in the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> structure attached to the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a>&#8217;s <code>pNext</code> chain"
9906 }
9907 ],
9908 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9909 {
9910 "vuid": "VUID-VkBindImageMemoryInfo-image-01622",
9911 "text": " If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>image</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> equal to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
9912 }
9913 ],
9914 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
9915 {
9916 "vuid": "VUID-VkBindImageMemoryInfo-memory-01903",
9917 "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
9918 }
9919 ],
9920 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
9921 {
9922 "vuid": "VUID-VkBindImageMemoryInfo-memory-02630",
9923 "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
9924 },
9925 {
9926 "vuid": "VUID-VkBindImageMemoryInfo-memory-02631",
9927 "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <code>VkImageCreateInfo</code>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created."
9928 }
9929 ],
9930 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [
9931 {
9932 "vuid": "VUID-VkBindImageMemoryInfo-image-01623",
9933 "text": " If <code>image</code> was created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>image</code> equal to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
9934 }
9935 ],
9936 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
9937 {
9938 "vuid": "VUID-VkBindImageMemoryInfo-image-01624",
9939 "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"
9940 }
9941 ],
9942 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+!(VK_VERSION_1_1+VK_KHR_swapchain)+!(VK_KHR_device_group+VK_KHR_swapchain)": [
9943 {
9944 "vuid": "VUID-VkBindImageMemoryInfo-memory-01625",
9945 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9946 }
9947 ],
9948 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
9949 {
9950 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01626",
9951 "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, all instances of <code>memory</code> specified by <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated"
9952 },
9953 {
9954 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01627",
9955 "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, and <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>splitInstanceBindRegionCount</code> is not zero, then <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code> bit set"
9956 },
9957 {
9958 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01628",
9959 "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be valid rectangles contained within the dimensions of <code>image</code>"
9960 },
9961 {
9962 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01629",
9963 "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, the union of the areas of all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> that correspond to the same instance of <code>image</code> <strong class=\"purple\">must</strong> cover the entire image."
9964 }
9965 ],
9966 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
9967 {
9968 "vuid": "VUID-VkBindImageMemoryInfo-image-01630",
9969 "text": " If <code>image</code> was created with a valid swapchain handle in <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>::<code>swapchain</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a valid instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> containing the same swapchain handle."
9970 },
9971 {
9972 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01631",
9973 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, <code>memory</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
9974 },
9975 {
9976 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01632",
9977 "text": " If the <code>pNext</code> chain does not include an instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
9978 }
9979 ],
9980 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)": [
9981 {
9982 "vuid": "VUID-VkBindImageMemoryInfo-handleTypes-02793",
9983 "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"
9984 },
9985 {
9986 "vuid": "VUID-VkBindImageMemoryInfo-memory-02794",
9987 "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"
9988 }
9989 ]
9990 },
9991 "VkBindImageMemoryDeviceGroupInfo": {
9992 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
9993 {
9994 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01633",
9995 "text": " At least one of <code>deviceIndexCount</code> and <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> be zero."
9996 },
9997 {
9998 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01634",
9999 "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
10000 },
10001 {
10002 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-01635",
10003 "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices."
10004 },
10005 {
10006 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-splitInstanceBindRegionCount-01636",
10007 "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"
10008 },
10009 {
10010 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-01637",
10011 "text": " Elements of <code>pSplitInstanceBindRegions</code> that correspond to the same instance of an image <strong class=\"purple\">must</strong> not overlap."
10012 },
10013 {
10014 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01638",
10015 "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"
10016 },
10017 {
10018 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01639",
10019 "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"
10020 },
10021 {
10022 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01640",
10023 "text": " The <code>extent.width</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block width of all non-metadata aspects of the image, or else <code>extent.width</code> + <code>offset.x</code> <strong class=\"purple\">must</strong> equal the width of the image subresource"
10024 },
10025 {
10026 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01641",
10027 "text": " The <code>extent.height</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else <code>extent.height</code><br> <code>offset.y</code> <strong class=\"purple\">must</strong> equal the width of the image subresource"
10028 },
10029 {
10030 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-sType-sType",
10031 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO</code>"
10032 },
10033 {
10034 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter",
10035 "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"
10036 },
10037 {
10038 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter",
10039 "text": " If <code>splitInstanceBindRegionCount</code> is not <code>0</code>, <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>splitInstanceBindRegionCount</code> <code>VkRect2D</code> structures"
10040 }
10041 ]
10042 },
10043 "VkBindImageMemorySwapchainInfoKHR": {
10044 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
10045 {
10046 "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644",
10047 "text": " <code>imageIndex</code> <strong class=\"purple\">must</strong> be less than the number of images in <code>swapchain</code>"
10048 },
10049 {
10050 "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType",
10051 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR</code>"
10052 },
10053 {
10054 "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter",
10055 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
10056 }
10057 ]
10058 },
10059 "VkBindImagePlaneMemoryInfo": {
10060 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10061 {
10062 "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283",
10063 "text": " If the image&#8217;s tiling is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>format plane</em> for the image. (That is, <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> for &#8220;<code>_2PLANE</code>&#8221; formats and <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> for &#8220;<code>_3PLANE</code>&#8221; formats.)"
10064 },
10065 {
10066 "vuid": "VUID-VkBindImagePlaneMemoryInfo-None-01643",
10067 "text": " A single call to <a href=\"#vkBindImageMemory2\">vkBindImageMemory2</a> <strong class=\"purple\">must</strong> bind all or none of the planes of an image (i.e. bindings to all planes of an image <strong class=\"purple\">must</strong> be made in a single <a href=\"#vkBindImageMemory2\">vkBindImageMemory2</a> call), as separate bindings"
10068 },
10069 {
10070 "vuid": "VUID-VkBindImagePlaneMemoryInfo-sType-sType",
10071 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO</code>"
10072 },
10073 {
10074 "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter",
10075 "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value"
10076 }
10077 ],
10078 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
10079 {
10080 "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284",
10081 "text": " If the image&#8217;s tiling is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>memory plane</em> for the image. (That is, <code>aspectMask</code> <strong class=\"purple\">must</strong> specify a plane index that is less than the <a href=\"#VkDrmFormatModifierPropertiesEXT\"><code>drmFormatModifierPlaneCount</code></a> associated with the image&#8217;s <a href=\"#VkImageCreateInfo\"><code>format</code></a> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\"><code>drmFormatModifier</code></a>.)"
10082 }
10083 ]
10084 },
10085 "vkCreateAccelerationStructureNV": {
10086 "(VK_NV_ray_tracing)": [
10087 {
10088 "vuid": "VUID-vkCreateAccelerationStructureNV-device-parameter",
10089 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10090 },
10091 {
10092 "vuid": "VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter",
10093 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAccelerationStructureCreateInfoNV</code> structure"
10094 },
10095 {
10096 "vuid": "VUID-vkCreateAccelerationStructureNV-pAllocator-parameter",
10097 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10098 },
10099 {
10100 "vuid": "VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter",
10101 "text": " <code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkAccelerationStructureNV</code> handle"
10102 }
10103 ]
10104 },
10105 "VkAccelerationStructureCreateInfoNV": {
10106 "(VK_NV_ray_tracing)": [
10107 {
10108 "vuid": "VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421",
10109 "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>"
10110 },
10111 {
10112 "vuid": "VUID-VkAccelerationStructureCreateInfoNV-sType-sType",
10113 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV</code>"
10114 },
10115 {
10116 "vuid": "VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext",
10117 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
10118 },
10119 {
10120 "vuid": "VUID-VkAccelerationStructureCreateInfoNV-info-parameter",
10121 "text": " <code>info</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureInfoNV</code> structure"
10122 }
10123 ]
10124 },
10125 "VkAccelerationStructureInfoNV": {
10126 "(VK_NV_ray_tracing)": [
10127 {
10128 "vuid": "VUID-VkAccelerationStructureInfoNV-geometryCount-02422",
10129 "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>"
10130 },
10131 {
10132 "vuid": "VUID-VkAccelerationStructureInfoNV-instanceCount-02423",
10133 "text": " <code>instanceCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxInstanceCount</code>"
10134 },
10135 {
10136 "vuid": "VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424",
10137 "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>"
10138 },
10139 {
10140 "vuid": "VUID-VkAccelerationStructureInfoNV-type-02425",
10141 "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>"
10142 },
10143 {
10144 "vuid": "VUID-VkAccelerationStructureInfoNV-type-02426",
10145 "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>"
10146 },
10147 {
10148 "vuid": "VUID-VkAccelerationStructureInfoNV-type-02786",
10149 "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"
10150 },
10151 {
10152 "vuid": "VUID-VkAccelerationStructureInfoNV-flags-02592",
10153 "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"
10154 },
10155 {
10156 "vuid": "VUID-VkAccelerationStructureInfoNV-scratch-02781",
10157 "text": " <code>scratch</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag"
10158 },
10159 {
10160 "vuid": "VUID-VkAccelerationStructureInfoNV-instanceData-02782",
10161 "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"
10162 },
10163 {
10164 "vuid": "VUID-VkAccelerationStructureInfoNV-sType-sType",
10165 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV</code>"
10166 },
10167 {
10168 "vuid": "VUID-VkAccelerationStructureInfoNV-pNext-pNext",
10169 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
10170 },
10171 {
10172 "vuid": "VUID-VkAccelerationStructureInfoNV-type-parameter",
10173 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeNV\">VkAccelerationStructureTypeNV</a> value"
10174 },
10175 {
10176 "vuid": "VUID-VkAccelerationStructureInfoNV-flags-parameter",
10177 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsNV\">VkBuildAccelerationStructureFlagBitsNV</a> values"
10178 },
10179 {
10180 "vuid": "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter",
10181 "text": " If <code>geometryCount</code> is not <code>0</code>, <code>pGeometries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>geometryCount</code> valid <code>VkGeometryNV</code> structures"
10182 }
10183 ]
10184 },
10185 "VkGeometryNV": {
10186 "(VK_NV_ray_tracing)": [
10187 {
10188 "vuid": "VUID-VkGeometryNV-sType-sType",
10189 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_NV</code>"
10190 },
10191 {
10192 "vuid": "VUID-VkGeometryNV-pNext-pNext",
10193 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
10194 },
10195 {
10196 "vuid": "VUID-VkGeometryNV-geometryType-parameter",
10197 "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeNV\">VkGeometryTypeNV</a> value"
10198 },
10199 {
10200 "vuid": "VUID-VkGeometryNV-geometry-parameter",
10201 "text": " <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <code>VkGeometryDataNV</code> structure"
10202 },
10203 {
10204 "vuid": "VUID-VkGeometryNV-flags-parameter",
10205 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsNV\">VkGeometryFlagBitsNV</a> values"
10206 }
10207 ]
10208 },
10209 "VkGeometryDataNV": {
10210 "(VK_NV_ray_tracing)": [
10211 {
10212 "vuid": "VUID-VkGeometryDataNV-triangles-parameter",
10213 "text": " <code>triangles</code> <strong class=\"purple\">must</strong> be a valid <code>VkGeometryTrianglesNV</code> structure"
10214 },
10215 {
10216 "vuid": "VUID-VkGeometryDataNV-aabbs-parameter",
10217 "text": " <code>aabbs</code> <strong class=\"purple\">must</strong> be a valid <code>VkGeometryAABBNV</code> structure"
10218 }
10219 ]
10220 },
10221 "VkGeometryTrianglesNV": {
10222 "(VK_NV_ray_tracing)": [
10223 {
10224 "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02428",
10225 "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>vertexData</code>"
10226 },
10227 {
10228 "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02429",
10229 "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the component size of <code>vertexFormat</code>"
10230 },
10231 {
10232 "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-02430",
10233 "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>"
10234 },
10235 {
10236 "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02431",
10237 "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>indexData</code>"
10238 },
10239 {
10240 "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02432",
10241 "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <code>indexType</code>"
10242 },
10243 {
10244 "vuid": "VUID-VkGeometryTrianglesNV-indexType-02433",
10245 "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>"
10246 },
10247 {
10248 "vuid": "VUID-VkGeometryTrianglesNV-indexData-02434",
10249 "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>"
10250 },
10251 {
10252 "vuid": "VUID-VkGeometryTrianglesNV-indexData-02435",
10253 "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>"
10254 },
10255 {
10256 "vuid": "VUID-VkGeometryTrianglesNV-indexCount-02436",
10257 "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>"
10258 },
10259 {
10260 "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02437",
10261 "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>transformData</code>"
10262 },
10263 {
10264 "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02438",
10265 "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>16</code>"
10266 },
10267 {
10268 "vuid": "VUID-VkGeometryTrianglesNV-sType-sType",
10269 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV</code>"
10270 },
10271 {
10272 "vuid": "VUID-VkGeometryTrianglesNV-pNext-pNext",
10273 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
10274 },
10275 {
10276 "vuid": "VUID-VkGeometryTrianglesNV-vertexData-parameter",
10277 "text": " If <code>vertexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>vertexData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
10278 },
10279 {
10280 "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-parameter",
10281 "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
10282 },
10283 {
10284 "vuid": "VUID-VkGeometryTrianglesNV-indexData-parameter",
10285 "text": " If <code>indexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
10286 },
10287 {
10288 "vuid": "VUID-VkGeometryTrianglesNV-indexType-parameter",
10289 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
10290 },
10291 {
10292 "vuid": "VUID-VkGeometryTrianglesNV-transformData-parameter",
10293 "text": " If <code>transformData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>transformData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
10294 },
10295 {
10296 "vuid": "VUID-VkGeometryTrianglesNV-commonparent",
10297 "text": " Each of <code>indexData</code>, <code>transformData</code>, and <code>vertexData</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
10298 }
10299 ]
10300 },
10301 "VkGeometryAABBNV": {
10302 "(VK_NV_ray_tracing)": [
10303 {
10304 "vuid": "VUID-VkGeometryAABBNV-offset-02439",
10305 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>aabbData</code>"
10306 },
10307 {
10308 "vuid": "VUID-VkGeometryAABBNV-offset-02440",
10309 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
10310 },
10311 {
10312 "vuid": "VUID-VkGeometryAABBNV-stride-02441",
10313 "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
10314 },
10315 {
10316 "vuid": "VUID-VkGeometryAABBNV-sType-sType",
10317 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV</code>"
10318 },
10319 {
10320 "vuid": "VUID-VkGeometryAABBNV-pNext-pNext",
10321 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
10322 },
10323 {
10324 "vuid": "VUID-VkGeometryAABBNV-aabbData-parameter",
10325 "text": " If <code>aabbData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>aabbData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
10326 }
10327 ]
10328 },
10329 "vkDestroyAccelerationStructureNV": {
10330 "(VK_NV_ray_tracing)": [
10331 {
10332 "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-02442",
10333 "text": " All submitted commands that refer to <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have completed execution"
10334 },
10335 {
10336 "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-02443",
10337 "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"
10338 },
10339 {
10340 "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-02444",
10341 "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>"
10342 },
10343 {
10344 "vuid": "VUID-vkDestroyAccelerationStructureNV-device-parameter",
10345 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10346 },
10347 {
10348 "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parameter",
10349 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
10350 },
10351 {
10352 "vuid": "VUID-vkDestroyAccelerationStructureNV-pAllocator-parameter",
10353 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10354 },
10355 {
10356 "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent",
10357 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
10358 }
10359 ]
10360 },
10361 "vkGetAccelerationStructureMemoryRequirementsNV": {
10362 "(VK_NV_ray_tracing)": [
10363 {
10364 "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter",
10365 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10366 },
10367 {
10368 "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter",
10369 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAccelerationStructureMemoryRequirementsInfoNV</code> structure"
10370 },
10371 {
10372 "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pMemoryRequirements-parameter",
10373 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements2KHR</code> structure"
10374 }
10375 ]
10376 },
10377 "VkAccelerationStructureMemoryRequirementsInfoNV": {
10378 "(VK_NV_ray_tracing)": [
10379 {
10380 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-sType-sType",
10381 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV</code>"
10382 },
10383 {
10384 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-pNext-pNext",
10385 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
10386 },
10387 {
10388 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter",
10389 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureMemoryRequirementsTypeNV\">VkAccelerationStructureMemoryRequirementsTypeNV</a> value"
10390 },
10391 {
10392 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter",
10393 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
10394 }
10395 ]
10396 },
10397 "vkBindAccelerationStructureMemoryNV": {
10398 "(VK_NV_ray_tracing)": [
10399 {
10400 "vuid": "VUID-vkBindAccelerationStructureMemoryNV-device-parameter",
10401 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10402 },
10403 {
10404 "vuid": "VUID-vkBindAccelerationStructureMemoryNV-pBindInfos-parameter",
10405 "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindAccelerationStructureMemoryInfoNV</code> structures"
10406 },
10407 {
10408 "vuid": "VUID-vkBindAccelerationStructureMemoryNV-bindInfoCount-arraylength",
10409 "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
10410 }
10411 ]
10412 },
10413 "VkBindAccelerationStructureMemoryInfoNV": {
10414 "(VK_NV_ray_tracing)": [
10415 {
10416 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-02450",
10417 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
10418 },
10419 {
10420 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-02451",
10421 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
10422 },
10423 {
10424 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-02593",
10425 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code>"
10426 },
10427 {
10428 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-02594",
10429 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code>"
10430 },
10431 {
10432 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-size-02595",
10433 "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
10434 },
10435 {
10436 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-sType-sType",
10437 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV</code>"
10438 },
10439 {
10440 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pNext-pNext",
10441 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
10442 },
10443 {
10444 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-parameter",
10445 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
10446 },
10447 {
10448 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-parameter",
10449 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
10450 },
10451 {
10452 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pDeviceIndices-parameter",
10453 "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"
10454 },
10455 {
10456 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-commonparent",
10457 "text": " Both of <code>accelerationStructure</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
10458 }
10459 ]
10460 },
10461 "vkGetAccelerationStructureHandleNV": {
10462 "(VK_NV_ray_tracing)": [
10463 {
10464 "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-02240",
10465 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be large enough to contain the result of the query, as described above"
10466 },
10467 {
10468 "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-02787",
10469 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object via <a href=\"#vkBindAccelerationStructureMemoryNV\">vkBindAccelerationStructureMemoryNV</a>"
10470 },
10471 {
10472 "vuid": "VUID-vkGetAccelerationStructureHandleNV-device-parameter",
10473 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10474 },
10475 {
10476 "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter",
10477 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
10478 },
10479 {
10480 "vuid": "VUID-vkGetAccelerationStructureHandleNV-pData-parameter",
10481 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
10482 },
10483 {
10484 "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength",
10485 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
10486 },
10487 {
10488 "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent",
10489 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
10490 }
10491 ]
10492 },
10493 "vkCreateSampler": {
10494 "core": [
10495 {
10496 "vuid": "VUID-vkCreateSampler-device-parameter",
10497 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10498 },
10499 {
10500 "vuid": "VUID-vkCreateSampler-pCreateInfo-parameter",
10501 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSamplerCreateInfo</code> structure"
10502 },
10503 {
10504 "vuid": "VUID-vkCreateSampler-pAllocator-parameter",
10505 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10506 },
10507 {
10508 "vuid": "VUID-vkCreateSampler-pSampler-parameter",
10509 "text": " <code>pSampler</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSampler</code> handle"
10510 }
10511 ]
10512 },
10513 "VkSamplerCreateInfo": {
10514 "core": [
10515 {
10516 "vuid": "VUID-VkSamplerCreateInfo-mipLodBias-01069",
10517 "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>"
10518 },
10519 {
10520 "vuid": "VUID-VkSamplerCreateInfo-maxLod-01973",
10521 "text": " <code>maxLod</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>minLod</code>"
10522 },
10523 {
10524 "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01070",
10525 "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>"
10526 },
10527 {
10528 "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01071",
10529 "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"
10530 },
10531 {
10532 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01072",
10533 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal"
10534 },
10535 {
10536 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01073",
10537 "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>"
10538 },
10539 {
10540 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01074",
10541 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minLod</code> and <code>maxLod</code> <strong class=\"purple\">must</strong> be zero"
10542 },
10543 {
10544 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01075",
10545 "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>"
10546 },
10547 {
10548 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01076",
10549 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
10550 },
10551 {
10552 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01077",
10553 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>compareEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
10554 },
10555 {
10556 "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01078",
10557 "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"
10558 },
10559 {
10560 "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01079",
10561 "text": " If the <code><a href=\"#VK_KHR_sampler_mirror_clamp_to_edge\">VK_KHR_sampler_mirror_clamp_to_edge</a></code> extension is not enabled, <code>addressModeU</code>, <code>addressModeV</code> and <code>addressModeW</code> <strong class=\"purple\">must</strong> not be <code>VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE</code>"
10562 },
10563 {
10564 "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01080",
10565 "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"
10566 },
10567 {
10568 "vuid": "VUID-VkSamplerCreateInfo-sType-sType",
10569 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO</code>"
10570 },
10571 {
10572 "vuid": "VUID-VkSamplerCreateInfo-pNext-pNext",
10573 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSamplerReductionModeCreateInfoEXT\">VkSamplerReductionModeCreateInfoEXT</a> or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>"
10574 },
10575 {
10576 "vuid": "VUID-VkSamplerCreateInfo-sType-unique",
10577 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
10578 },
10579 {
10580 "vuid": "VUID-VkSamplerCreateInfo-flags-parameter",
10581 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSamplerCreateFlagBits\">VkSamplerCreateFlagBits</a> values"
10582 },
10583 {
10584 "vuid": "VUID-VkSamplerCreateInfo-magFilter-parameter",
10585 "text": " <code>magFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
10586 },
10587 {
10588 "vuid": "VUID-VkSamplerCreateInfo-minFilter-parameter",
10589 "text": " <code>minFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
10590 },
10591 {
10592 "vuid": "VUID-VkSamplerCreateInfo-mipmapMode-parameter",
10593 "text": " <code>mipmapMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerMipmapMode\">VkSamplerMipmapMode</a> value"
10594 },
10595 {
10596 "vuid": "VUID-VkSamplerCreateInfo-addressModeU-parameter",
10597 "text": " <code>addressModeU</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
10598 },
10599 {
10600 "vuid": "VUID-VkSamplerCreateInfo-addressModeV-parameter",
10601 "text": " <code>addressModeV</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
10602 },
10603 {
10604 "vuid": "VUID-VkSamplerCreateInfo-addressModeW-parameter",
10605 "text": " <code>addressModeW</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
10606 }
10607 ],
10608 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10609 {
10610 "vuid": "VUID-VkSamplerCreateInfo-minFilter-01645",
10611 "text": " If <a href=\"#samplers-YCbCr-conversion\">sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion</a> is enabled and <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT</code> is not set for the format, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal to the sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion&#8217;s <code>chromaFilter</code>"
10612 },
10613 {
10614 "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01646",
10615 "text": " If <a href=\"#samplers-YCbCr-conversion\">sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion</a> is enabled, <code>addressModeU</code>, <code>addressModeV</code>, and <code>addressModeW</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>, and <code>unnormalizedCoordinates</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
10616 }
10617 ],
10618 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_sampler_filter_minmax)": [
10619 {
10620 "vuid": "VUID-VkSamplerCreateInfo-None-01647",
10621 "text": " The sampler reduction mode <strong class=\"purple\">must</strong> be set to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT</code> if <a href=\"#samplers-YCbCr-conversion\">sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion</a> is enabled"
10622 }
10623 ],
10624 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
10625 {
10626 "vuid": "VUID-VkSamplerCreateInfo-magFilter-01081",
10627 "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>"
10628 }
10629 ],
10630 "(VK_IMG_filter_cubic+VK_EXT_sampler_filter_minmax)+!(VK_EXT_filter_cubic)": [
10631 {
10632 "vuid": "VUID-VkSamplerCreateInfo-magFilter-01422",
10633 "text": " If either <code>magFilter</code> or <code>minFilter</code> is <code>VK_FILTER_CUBIC_EXT</code>, the <code>reductionMode</code> member of <a href=\"#VkSamplerReductionModeCreateInfoEXT\">VkSamplerReductionModeCreateInfoEXT</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT</code>"
10634 }
10635 ],
10636 "(VK_EXT_sampler_filter_minmax)": [
10637 {
10638 "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01423",
10639 "text": " If <code>compareEnable</code> is <code>VK_TRUE</code>, the <code>reductionMode</code> member of <a href=\"#VkSamplerReductionModeCreateInfoEXT\">VkSamplerReductionModeCreateInfoEXT</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT</code>"
10640 }
10641 ],
10642 "(VK_EXT_fragment_density_map)": [
10643 {
10644 "vuid": "VUID-VkSamplerCreateInfo-flags-02574",
10645 "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."
10646 },
10647 {
10648 "vuid": "VUID-VkSamplerCreateInfo-flags-02575",
10649 "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>."
10650 },
10651 {
10652 "vuid": "VUID-VkSamplerCreateInfo-flags-02576",
10653 "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."
10654 },
10655 {
10656 "vuid": "VUID-VkSamplerCreateInfo-flags-02577",
10657 "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>."
10658 },
10659 {
10660 "vuid": "VUID-VkSamplerCreateInfo-flags-02578",
10661 "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>."
10662 },
10663 {
10664 "vuid": "VUID-VkSamplerCreateInfo-flags-02579",
10665 "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>."
10666 },
10667 {
10668 "vuid": "VUID-VkSamplerCreateInfo-flags-02580",
10669 "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>."
10670 }
10671 ]
10672 },
10673 "VkSamplerReductionModeCreateInfoEXT": {
10674 "(VK_EXT_sampler_filter_minmax)": [
10675 {
10676 "vuid": "VUID-VkSamplerReductionModeCreateInfoEXT-sType-sType",
10677 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT</code>"
10678 },
10679 {
10680 "vuid": "VUID-VkSamplerReductionModeCreateInfoEXT-reductionMode-parameter",
10681 "text": " <code>reductionMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerReductionModeEXT\">VkSamplerReductionModeEXT</a> value"
10682 }
10683 ]
10684 },
10685 "vkDestroySampler": {
10686 "core": [
10687 {
10688 "vuid": "VUID-vkDestroySampler-sampler-01082",
10689 "text": " All submitted commands that refer to <code>sampler</code> <strong class=\"purple\">must</strong> have completed execution"
10690 },
10691 {
10692 "vuid": "VUID-vkDestroySampler-sampler-01083",
10693 "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"
10694 },
10695 {
10696 "vuid": "VUID-vkDestroySampler-sampler-01084",
10697 "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>"
10698 },
10699 {
10700 "vuid": "VUID-vkDestroySampler-device-parameter",
10701 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10702 },
10703 {
10704 "vuid": "VUID-vkDestroySampler-sampler-parameter",
10705 "text": " If <code>sampler</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampler</code> handle"
10706 },
10707 {
10708 "vuid": "VUID-vkDestroySampler-pAllocator-parameter",
10709 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10710 },
10711 {
10712 "vuid": "VUID-vkDestroySampler-sampler-parent",
10713 "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>"
10714 }
10715 ]
10716 },
10717 "VkSamplerYcbcrConversionInfo": {
10718 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10719 {
10720 "vuid": "VUID-VkSamplerYcbcrConversionInfo-sType-sType",
10721 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO</code>"
10722 },
10723 {
10724 "vuid": "VUID-VkSamplerYcbcrConversionInfo-conversion-parameter",
10725 "text": " <code>conversion</code> <strong class=\"purple\">must</strong> be a valid <code>VkSamplerYcbcrConversion</code> handle"
10726 }
10727 ]
10728 },
10729 "vkCreateSamplerYcbcrConversion": {
10730 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10731 {
10732 "vuid": "VUID-vkCreateSamplerYcbcrConversion-None-01648",
10733 "text": " The <a href=\"#features-sampler-YCbCr-conversion\">sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion feature</a> <strong class=\"purple\">must</strong> be enabled"
10734 },
10735 {
10736 "vuid": "VUID-vkCreateSamplerYcbcrConversion-device-parameter",
10737 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10738 },
10739 {
10740 "vuid": "VUID-vkCreateSamplerYcbcrConversion-pCreateInfo-parameter",
10741 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSamplerYcbcrConversionCreateInfo</code> structure"
10742 },
10743 {
10744 "vuid": "VUID-vkCreateSamplerYcbcrConversion-pAllocator-parameter",
10745 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10746 },
10747 {
10748 "vuid": "VUID-vkCreateSamplerYcbcrConversion-pYcbcrConversion-parameter",
10749 "text": " <code>pYcbcrConversion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSamplerYcbcrConversion</code> handle"
10750 }
10751 ]
10752 },
10753 "VkSamplerYcbcrConversionCreateInfo": {
10754 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
10755 {
10756 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01649",
10757 "text": " <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>"
10758 }
10759 ],
10760 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
10761 {
10762 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01904",
10763 "text": " If an external format conversion is being created, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>, otherwise it <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>."
10764 }
10765 ],
10766 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10767 {
10768 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01650",
10769 "text": " <code>format</code> <strong class=\"purple\">must</strong> support <code>VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT</code> or <code>VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT</code>"
10770 },
10771 {
10772 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01651",
10773 "text": " If the format does not support <code>VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT</code>, <code>xChromaOffset</code> and <code>yChromaOffset</code> <strong class=\"purple\">must</strong> not be <code>VK_CHROMA_LOCATION_COSITED_EVEN</code>"
10774 },
10775 {
10776 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652",
10777 "text": " If the format does not support <code>VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT</code>, <code>xChromaOffset</code> and <code>yChromaOffset</code> <strong class=\"purple\">must</strong> not be <code>VK_CHROMA_LOCATION_MIDPOINT</code>"
10778 },
10779 {
10780 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01653",
10781 "text": " <code>format</code> <strong class=\"purple\">must</strong> represent unsigned normalized values (i.e. the format must be a <code>UNORM</code> format)"
10782 },
10783 {
10784 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02581",
10785 "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.g</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>"
10786 },
10787 {
10788 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02582",
10789 "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.a</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>, <code>VK_COMPONENT_SWIZZLE_ONE</code>, or <code>VK_COMPONENT_SWIZZLE_ZERO</code>"
10790 },
10791 {
10792 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02583",
10793 "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.r</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code> or <code>VK_COMPONENT_SWIZZLE_B</code>"
10794 },
10795 {
10796 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02584",
10797 "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.b</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code> or <code>VK_COMPONENT_SWIZZLE_R</code>"
10798 },
10799 {
10800 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02585",
10801 "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, and if either <code>components.r</code> or <code>components.b</code> is <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>, both values <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>"
10802 },
10803 {
10804 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-01655",
10805 "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>"
10806 },
10807 {
10808 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-02748",
10809 "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."
10810 },
10811 {
10812 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656",
10813 "text": " If the format does not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT</code>, <code>forceExplicitReconstruction</code> <strong class=\"purple\">must</strong> be FALSE"
10814 },
10815 {
10816 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657",
10817 "text": " If the format does not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT</code>, <code>chromaFilter</code> <strong class=\"purple\">must</strong> be <code>VK_FILTER_NEAREST</code>"
10818 },
10819 {
10820 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-sType-sType",
10821 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO</code>"
10822 },
10823 {
10824 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-pNext-pNext",
10825 "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>"
10826 },
10827 {
10828 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter",
10829 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
10830 },
10831 {
10832 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-parameter",
10833 "text": " <code>ycbcrModel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrModelConversion\">VkSamplerYcbcrModelConversion</a> value"
10834 },
10835 {
10836 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-parameter",
10837 "text": " <code>ycbcrRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrRange\">VkSamplerYcbcrRange</a> value"
10838 },
10839 {
10840 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-parameter",
10841 "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <code>VkComponentMapping</code> structure"
10842 },
10843 {
10844 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-parameter",
10845 "text": " <code>xChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value"
10846 },
10847 {
10848 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-yChromaOffset-parameter",
10849 "text": " <code>yChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value"
10850 },
10851 {
10852 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-parameter",
10853 "text": " <code>chromaFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
10854 }
10855 ]
10856 },
10857 "vkDestroySamplerYcbcrConversion": {
10858 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
10859 {
10860 "vuid": "VUID-vkDestroySamplerYcbcrConversion-device-parameter",
10861 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10862 },
10863 {
10864 "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parameter",
10865 "text": " If <code>ycbcrConversion</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>ycbcrConversion</code> <strong class=\"purple\">must</strong> be a valid <code>VkSamplerYcbcrConversion</code> handle"
10866 },
10867 {
10868 "vuid": "VUID-vkDestroySamplerYcbcrConversion-pAllocator-parameter",
10869 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10870 },
10871 {
10872 "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parent",
10873 "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>"
10874 }
10875 ]
10876 },
10877 "vkCreateDescriptorSetLayout": {
10878 "core": [
10879 {
10880 "vuid": "VUID-vkCreateDescriptorSetLayout-device-parameter",
10881 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
10882 },
10883 {
10884 "vuid": "VUID-vkCreateDescriptorSetLayout-pCreateInfo-parameter",
10885 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorSetLayoutCreateInfo</code> structure"
10886 },
10887 {
10888 "vuid": "VUID-vkCreateDescriptorSetLayout-pAllocator-parameter",
10889 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
10890 },
10891 {
10892 "vuid": "VUID-vkCreateDescriptorSetLayout-pSetLayout-parameter",
10893 "text": " <code>pSetLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorSetLayout</code> handle"
10894 }
10895 ]
10896 },
10897 "VkDescriptorSetLayoutCreateInfo": {
10898 "core": [
10899 {
10900 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-binding-00279",
10901 "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."
10902 },
10903 {
10904 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-sType-sType",
10905 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO</code>"
10906 },
10907 {
10908 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext",
10909 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetLayoutBindingFlagsCreateInfoEXT\">VkDescriptorSetLayoutBindingFlagsCreateInfoEXT</a>"
10910 },
10911 {
10912 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter",
10913 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorSetLayoutCreateFlagBits\">VkDescriptorSetLayoutCreateFlagBits</a> values"
10914 },
10915 {
10916 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter",
10917 "text": " If <code>bindingCount</code> is not <code>0</code>, <code>pBindings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <code>VkDescriptorSetLayoutBinding</code> structures"
10918 }
10919 ],
10920 "(VK_KHR_push_descriptor)": [
10921 {
10922 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00280",
10923 "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>"
10924 },
10925 {
10926 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00281",
10927 "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>"
10928 }
10929 ],
10930 "(VK_KHR_push_descriptor)+(VK_EXT_inline_uniform_block)": [
10931 {
10932 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-02208",
10933 "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>"
10934 }
10935 ],
10936 "(VK_EXT_descriptor_indexing)": [
10937 {
10938 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-03000",
10939 "text": " If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code> bit set, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code>"
10940 },
10941 {
10942 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001",
10943 "text": " If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code> bit set, then all bindings <strong class=\"purple\">must</strong> not have <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>"
10944 }
10945 ]
10946 },
10947 "VkDescriptorSetLayoutBinding": {
10948 "core": [
10949 {
10950 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-00282",
10951 "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"
10952 },
10953 {
10954 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283",
10955 "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"
10956 },
10957 {
10958 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-01510",
10959 "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>"
10960 },
10961 {
10962 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter",
10963 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
10964 }
10965 ],
10966 "(VK_EXT_inline_uniform_block)": [
10967 {
10968 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02209",
10969 "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>"
10970 },
10971 {
10972 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02210",
10973 "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>"
10974 }
10975 ]
10976 },
10977 "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT": {
10978 "(VK_EXT_descriptor_indexing)": [
10979 {
10980 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-bindingCount-03002",
10981 "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>"
10982 },
10983 {
10984 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-03004",
10985 "text": " If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>, then all other elements of <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>pBindings</code> <strong class=\"purple\">must</strong> have a smaller value of <code>binding</code>"
10986 },
10987 {
10988 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUniformBufferUpdateAfterBind-03005",
10989 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingUniformBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
10990 },
10991 {
10992 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingSampledImageUpdateAfterBind-03006",
10993 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingSampledImageUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, or <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
10994 },
10995 {
10996 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageImageUpdateAfterBind-03007",
10997 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingStorageImageUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
10998 },
10999 {
11000 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageBufferUpdateAfterBind-03008",
11001 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingStorageBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
11002 },
11003 {
11004 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUniformTexelBufferUpdateAfterBind-03009",
11005 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingUniformTexelBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
11006 },
11007 {
11008 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageTexelBufferUpdateAfterBind-03010",
11009 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingStorageTexelBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
11010 },
11011 {
11012 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-None-03011",
11013 "text": " All bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
11014 },
11015 {
11016 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUpdateUnusedWhilePending-03012",
11017 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingUpdateUnusedWhilePending</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT</code>"
11018 },
11019 {
11020 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingPartiallyBound-03013",
11021 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingPartiallyBound</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT</code>"
11022 },
11023 {
11024 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingVariableDescriptorCount-03014",
11025 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingVariableDescriptorCount</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>"
11026 },
11027 {
11028 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-03015",
11029 "text": " If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>, that element&#8217;s <code>descriptorType</code> <strong class=\"purple\">must</strong> not be <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>"
11030 },
11031 {
11032 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-sType-sType",
11033 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT</code>"
11034 },
11035 {
11036 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-parameter",
11037 "text": " If <code>bindingCount</code> is not <code>0</code>, and <code>pBindingFlags</code> is not <code>NULL</code>, <code>pBindingFlags</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid combinations of <a href=\"#VkDescriptorBindingFlagBitsEXT\">VkDescriptorBindingFlagBitsEXT</a> values"
11038 }
11039 ],
11040 "(VK_EXT_descriptor_indexing)+(VK_KHR_push_descriptor)": [
11041 {
11042 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-flags-03003",
11043 "text": " If <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>flags</code> includes <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>, <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT</code>, or <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>"
11044 }
11045 ],
11046 "(VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
11047 {
11048 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingInlineUniformBlockUpdateAfterBind-02211",
11049 "text": " If <a href=\"#VkPhysicalDeviceInlineUniformBlockFeaturesEXT\">VkPhysicalDeviceInlineUniformBlockFeaturesEXT</a>::<code>descriptorBindingInlineUniformBlockUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
11050 }
11051 ]
11052 },
11053 "vkGetDescriptorSetLayoutSupport": {
11054 "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
11055 {
11056 "vuid": "VUID-vkGetDescriptorSetLayoutSupport-device-parameter",
11057 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11058 },
11059 {
11060 "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pCreateInfo-parameter",
11061 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorSetLayoutCreateInfo</code> structure"
11062 },
11063 {
11064 "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pSupport-parameter",
11065 "text": " <code>pSupport</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorSetLayoutSupport</code> structure"
11066 }
11067 ]
11068 },
11069 "VkDescriptorSetLayoutSupport": {
11070 "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
11071 {
11072 "vuid": "VUID-VkDescriptorSetLayoutSupport-sType-sType",
11073 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT</code>"
11074 },
11075 {
11076 "vuid": "VUID-VkDescriptorSetLayoutSupport-pNext-pNext",
11077 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountLayoutSupportEXT\">VkDescriptorSetVariableDescriptorCountLayoutSupportEXT</a>"
11078 }
11079 ]
11080 },
11081 "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT": {
11082 "(VK_EXT_descriptor_indexing)": [
11083 {
11084 "vuid": "VUID-VkDescriptorSetVariableDescriptorCountLayoutSupportEXT-sType-sType",
11085 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT</code>"
11086 }
11087 ]
11088 },
11089 "vkDestroyDescriptorSetLayout": {
11090 "core": [
11091 {
11092 "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00284",
11093 "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"
11094 },
11095 {
11096 "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00285",
11097 "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>"
11098 },
11099 {
11100 "vuid": "VUID-vkDestroyDescriptorSetLayout-device-parameter",
11101 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11102 },
11103 {
11104 "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parameter",
11105 "text": " If <code>descriptorSetLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle"
11106 },
11107 {
11108 "vuid": "VUID-vkDestroyDescriptorSetLayout-pAllocator-parameter",
11109 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
11110 },
11111 {
11112 "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parent",
11113 "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>"
11114 }
11115 ]
11116 },
11117 "vkCreatePipelineLayout": {
11118 "core": [
11119 {
11120 "vuid": "VUID-vkCreatePipelineLayout-device-parameter",
11121 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11122 },
11123 {
11124 "vuid": "VUID-vkCreatePipelineLayout-pCreateInfo-parameter",
11125 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineLayoutCreateInfo</code> structure"
11126 },
11127 {
11128 "vuid": "VUID-vkCreatePipelineLayout-pAllocator-parameter",
11129 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
11130 },
11131 {
11132 "vuid": "VUID-vkCreatePipelineLayout-pPipelineLayout-parameter",
11133 "text": " <code>pPipelineLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPipelineLayout</code> handle"
11134 }
11135 ]
11136 },
11137 "VkPipelineLayoutCreateInfo": {
11138 "core": [
11139 {
11140 "vuid": "VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286",
11141 "text": " <code>setLayoutCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxBoundDescriptorSets</code>"
11142 },
11143 {
11144 "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-00292",
11145 "text": " Any two elements of <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> not include the same stage in <code>stageFlags</code>"
11146 },
11147 {
11148 "vuid": "VUID-VkPipelineLayoutCreateInfo-sType-sType",
11149 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO</code>"
11150 },
11151 {
11152 "vuid": "VUID-VkPipelineLayoutCreateInfo-pNext-pNext",
11153 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
11154 },
11155 {
11156 "vuid": "VUID-VkPipelineLayoutCreateInfo-flags-zerobitmask",
11157 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
11158 },
11159 {
11160 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter",
11161 "text": " If <code>setLayoutCount</code> is not <code>0</code>, <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>setLayoutCount</code> valid <code>VkDescriptorSetLayout</code> handles"
11162 },
11163 {
11164 "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-parameter",
11165 "text": " If <code>pushConstantRangeCount</code> is not <code>0</code>, <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pushConstantRangeCount</code> valid <code>VkPushConstantRange</code> structures"
11166 }
11167 ],
11168 "!(VK_EXT_descriptor_indexing)": [
11169 {
11170 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00287",
11171 "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>"
11172 },
11173 {
11174 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00288",
11175 "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>"
11176 },
11177 {
11178 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00289",
11179 "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>"
11180 },
11181 {
11182 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00290",
11183 "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>"
11184 },
11185 {
11186 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00291",
11187 "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>"
11188 },
11189 {
11190 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01676",
11191 "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>"
11192 },
11193 {
11194 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01677",
11195 "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>"
11196 },
11197 {
11198 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01678",
11199 "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>"
11200 },
11201 {
11202 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01679",
11203 "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>"
11204 },
11205 {
11206 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01680",
11207 "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>"
11208 },
11209 {
11210 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01681",
11211 "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>"
11212 },
11213 {
11214 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01682",
11215 "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>"
11216 },
11217 {
11218 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01683",
11219 "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>"
11220 },
11221 {
11222 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01684",
11223 "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>"
11224 }
11225 ],
11226 "!(VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
11227 {
11228 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02212",
11229 "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>"
11230 },
11231 {
11232 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02213",
11233 "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>"
11234 }
11235 ],
11236 "(VK_EXT_descriptor_indexing)": [
11237 {
11238 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03016",
11239 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSamplers</code>"
11240 },
11241 {
11242 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03017",
11243 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorUniformBuffers</code>"
11244 },
11245 {
11246 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03018",
11247 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageBuffers</code>"
11248 },
11249 {
11250 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03019",
11251 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSampledImages</code>"
11252 },
11253 {
11254 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03020",
11255 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageImages</code>"
11256 },
11257 {
11258 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03021",
11259 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorInputAttachments</code>"
11260 },
11261 {
11262 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03022",
11263 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindSamplers</code>"
11264 },
11265 {
11266 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03023",
11267 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindUniformBuffers</code>"
11268 },
11269 {
11270 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03024",
11271 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageBuffers</code>"
11272 },
11273 {
11274 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03025",
11275 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindSampledImages</code>"
11276 },
11277 {
11278 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03026",
11279 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageImages</code>"
11280 },
11281 {
11282 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03027",
11283 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindInputAttachments</code>"
11284 },
11285 {
11286 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03028",
11287 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSamplers</code>"
11288 },
11289 {
11290 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03029",
11291 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffers</code>"
11292 },
11293 {
11294 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03030",
11295 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffersDynamic</code>"
11296 },
11297 {
11298 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03031",
11299 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffers</code>"
11300 },
11301 {
11302 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03032",
11303 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffersDynamic</code>"
11304 },
11305 {
11306 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03033",
11307 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSampledImages</code>"
11308 },
11309 {
11310 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03034",
11311 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageImages</code>"
11312 },
11313 {
11314 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03035",
11315 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetInputAttachments</code>"
11316 },
11317 {
11318 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03036",
11319 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindSamplers</code>"
11320 },
11321 {
11322 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03037",
11323 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindUniformBuffers</code>"
11324 },
11325 {
11326 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03038",
11327 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindUniformBuffersDynamic</code>"
11328 },
11329 {
11330 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03039",
11331 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindStorageBuffers</code>"
11332 },
11333 {
11334 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03040",
11335 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindStorageBuffersDynamic</code>"
11336 },
11337 {
11338 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03041",
11339 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindSampledImages</code>"
11340 },
11341 {
11342 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03042",
11343 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindStorageImages</code>"
11344 },
11345 {
11346 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03043",
11347 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindInputAttachments</code>"
11348 }
11349 ],
11350 "(VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
11351 {
11352 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02214",
11353 "text": " The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxPerStageDescriptorInlineUniformBlocks</code>"
11354 },
11355 {
11356 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02215",
11357 "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>"
11358 },
11359 {
11360 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02216",
11361 "text": " The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxDescriptorSetInlineUniformBlocks</code>"
11362 },
11363 {
11364 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02217",
11365 "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>"
11366 }
11367 ],
11368 "(VK_KHR_push_descriptor)": [
11369 {
11370 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293",
11371 "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"
11372 }
11373 ],
11374 "(VK_NV_ray_tracing)": [
11375 {
11376 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02381",
11377 "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxDescriptorSetAccelerationStructures</code>"
11378 }
11379 ]
11380 },
11381 "VkPushConstantRange": {
11382 "core": [
11383 {
11384 "vuid": "VUID-VkPushConstantRange-offset-00294",
11385 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>"
11386 },
11387 {
11388 "vuid": "VUID-VkPushConstantRange-offset-00295",
11389 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
11390 },
11391 {
11392 "vuid": "VUID-VkPushConstantRange-size-00296",
11393 "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11394 },
11395 {
11396 "vuid": "VUID-VkPushConstantRange-size-00297",
11397 "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
11398 },
11399 {
11400 "vuid": "VUID-VkPushConstantRange-size-00298",
11401 "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>"
11402 },
11403 {
11404 "vuid": "VUID-VkPushConstantRange-stageFlags-parameter",
11405 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
11406 },
11407 {
11408 "vuid": "VUID-VkPushConstantRange-stageFlags-requiredbitmask",
11409 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
11410 }
11411 ]
11412 },
11413 "vkDestroyPipelineLayout": {
11414 "core": [
11415 {
11416 "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00299",
11417 "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"
11418 },
11419 {
11420 "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00300",
11421 "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>"
11422 },
11423 {
11424 "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-02004",
11425 "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"
11426 },
11427 {
11428 "vuid": "VUID-vkDestroyPipelineLayout-device-parameter",
11429 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11430 },
11431 {
11432 "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parameter",
11433 "text": " If <code>pipelineLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
11434 },
11435 {
11436 "vuid": "VUID-vkDestroyPipelineLayout-pAllocator-parameter",
11437 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
11438 },
11439 {
11440 "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parent",
11441 "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>"
11442 }
11443 ]
11444 },
11445 "vkCreateDescriptorPool": {
11446 "core": [
11447 {
11448 "vuid": "VUID-vkCreateDescriptorPool-device-parameter",
11449 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11450 },
11451 {
11452 "vuid": "VUID-vkCreateDescriptorPool-pCreateInfo-parameter",
11453 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorPoolCreateInfo</code> structure"
11454 },
11455 {
11456 "vuid": "VUID-vkCreateDescriptorPool-pAllocator-parameter",
11457 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
11458 },
11459 {
11460 "vuid": "VUID-vkCreateDescriptorPool-pDescriptorPool-parameter",
11461 "text": " <code>pDescriptorPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorPool</code> handle"
11462 }
11463 ]
11464 },
11465 "VkDescriptorPoolCreateInfo": {
11466 "core": [
11467 {
11468 "vuid": "VUID-VkDescriptorPoolCreateInfo-maxSets-00301",
11469 "text": " <code>maxSets</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11470 },
11471 {
11472 "vuid": "VUID-VkDescriptorPoolCreateInfo-sType-sType",
11473 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO</code>"
11474 },
11475 {
11476 "vuid": "VUID-VkDescriptorPoolCreateInfo-pNext-pNext",
11477 "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>"
11478 },
11479 {
11480 "vuid": "VUID-VkDescriptorPoolCreateInfo-flags-parameter",
11481 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorPoolCreateFlagBits\">VkDescriptorPoolCreateFlagBits</a> values"
11482 },
11483 {
11484 "vuid": "VUID-VkDescriptorPoolCreateInfo-pPoolSizes-parameter",
11485 "text": " <code>pPoolSizes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>poolSizeCount</code> valid <code>VkDescriptorPoolSize</code> structures"
11486 },
11487 {
11488 "vuid": "VUID-VkDescriptorPoolCreateInfo-poolSizeCount-arraylength",
11489 "text": " <code>poolSizeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11490 }
11491 ]
11492 },
11493 "VkDescriptorPoolInlineUniformBlockCreateInfoEXT": {
11494 "(VK_EXT_inline_uniform_block)": [
11495 {
11496 "vuid": "VUID-VkDescriptorPoolInlineUniformBlockCreateInfoEXT-sType-sType",
11497 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT</code>"
11498 }
11499 ]
11500 },
11501 "VkDescriptorPoolSize": {
11502 "core": [
11503 {
11504 "vuid": "VUID-VkDescriptorPoolSize-descriptorCount-00302",
11505 "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11506 },
11507 {
11508 "vuid": "VUID-VkDescriptorPoolSize-type-parameter",
11509 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
11510 }
11511 ],
11512 "(VK_EXT_inline_uniform_block)": [
11513 {
11514 "vuid": "VUID-VkDescriptorPoolSize-type-02218",
11515 "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>"
11516 }
11517 ]
11518 },
11519 "vkDestroyDescriptorPool": {
11520 "core": [
11521 {
11522 "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00303",
11523 "text": " All submitted commands that refer to <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution"
11524 },
11525 {
11526 "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00304",
11527 "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"
11528 },
11529 {
11530 "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00305",
11531 "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>"
11532 },
11533 {
11534 "vuid": "VUID-vkDestroyDescriptorPool-device-parameter",
11535 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11536 },
11537 {
11538 "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parameter",
11539 "text": " If <code>descriptorPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
11540 },
11541 {
11542 "vuid": "VUID-vkDestroyDescriptorPool-pAllocator-parameter",
11543 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
11544 },
11545 {
11546 "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parent",
11547 "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>"
11548 }
11549 ]
11550 },
11551 "vkAllocateDescriptorSets": {
11552 "core": [
11553 {
11554 "vuid": "VUID-vkAllocateDescriptorSets-device-parameter",
11555 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11556 },
11557 {
11558 "vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo-parameter",
11559 "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorSetAllocateInfo</code> structure"
11560 },
11561 {
11562 "vuid": "VUID-vkAllocateDescriptorSets-pDescriptorSets-parameter",
11563 "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo</code>::descriptorSetCount <code>VkDescriptorSet</code> handles"
11564 },
11565 {
11566 "vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo::descriptorSetCount-arraylength",
11567 "text": " The value referenced by <code>pAllocateInfo</code>::<code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11568 }
11569 ]
11570 },
11571 "VkDescriptorSetAllocateInfo": {
11572 "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
11573 {
11574 "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-00306",
11575 "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>"
11576 },
11577 {
11578 "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-00307",
11579 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts"
11580 }
11581 ],
11582 "(VK_KHR_push_descriptor)": [
11583 {
11584 "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308",
11585 "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"
11586 }
11587 ],
11588 "(VK_EXT_descriptor_indexing)": [
11589 {
11590 "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-03044",
11591 "text": " If any element of <code>pSetLayouts</code> was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set, <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set"
11592 }
11593 ],
11594 "core": [
11595 {
11596 "vuid": "VUID-VkDescriptorSetAllocateInfo-sType-sType",
11597 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO</code>"
11598 },
11599 {
11600 "vuid": "VUID-VkDescriptorSetAllocateInfo-pNext-pNext",
11601 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountAllocateInfoEXT\">VkDescriptorSetVariableDescriptorCountAllocateInfoEXT</a>"
11602 },
11603 {
11604 "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-parameter",
11605 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
11606 },
11607 {
11608 "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-parameter",
11609 "text": " <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <code>VkDescriptorSetLayout</code> handles"
11610 },
11611 {
11612 "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-arraylength",
11613 "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11614 },
11615 {
11616 "vuid": "VUID-VkDescriptorSetAllocateInfo-commonparent",
11617 "text": " Both of <code>descriptorPool</code>, and the elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
11618 }
11619 ]
11620 },
11621 "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT": {
11622 "(VK_EXT_descriptor_indexing)": [
11623 {
11624 "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-descriptorSetCount-03045",
11625 "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>"
11626 },
11627 {
11628 "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-pSetLayouts-03046",
11629 "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."
11630 },
11631 {
11632 "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-sType-sType",
11633 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT</code>"
11634 },
11635 {
11636 "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-pDescriptorCounts-parameter",
11637 "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"
11638 }
11639 ]
11640 },
11641 "vkFreeDescriptorSets": {
11642 "core": [
11643 {
11644 "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00309",
11645 "text": " All submitted commands that refer to any element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have completed execution"
11646 },
11647 {
11648 "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00310",
11649 "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>"
11650 },
11651 {
11652 "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00311",
11653 "text": " Each valid handle in <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been allocated from <code>descriptorPool</code>"
11654 },
11655 {
11656 "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-00312",
11657 "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"
11658 },
11659 {
11660 "vuid": "VUID-vkFreeDescriptorSets-device-parameter",
11661 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11662 },
11663 {
11664 "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parameter",
11665 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
11666 },
11667 {
11668 "vuid": "VUID-vkFreeDescriptorSets-descriptorSetCount-arraylength",
11669 "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11670 },
11671 {
11672 "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parent",
11673 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11674 },
11675 {
11676 "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-parent",
11677 "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>"
11678 }
11679 ]
11680 },
11681 "vkResetDescriptorPool": {
11682 "core": [
11683 {
11684 "vuid": "VUID-vkResetDescriptorPool-descriptorPool-00313",
11685 "text": " All uses of <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution"
11686 },
11687 {
11688 "vuid": "VUID-vkResetDescriptorPool-device-parameter",
11689 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11690 },
11691 {
11692 "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parameter",
11693 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
11694 },
11695 {
11696 "vuid": "VUID-vkResetDescriptorPool-flags-zerobitmask",
11697 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
11698 },
11699 {
11700 "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parent",
11701 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
11702 }
11703 ]
11704 },
11705 "vkUpdateDescriptorSets": {
11706 "!(VK_EXT_descriptor_indexing)": [
11707 {
11708 "vuid": "VUID-vkUpdateDescriptorSets-dstSet-00314",
11709 "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>."
11710 }
11711 ],
11712 "(VK_EXT_descriptor_indexing)": [
11713 {
11714 "vuid": "VUID-vkUpdateDescriptorSets-None-03047",
11715 "text": " Descriptor bindings updated by this command which were created without the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code> or <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT</code> bits set <strong class=\"purple\">must</strong> not be used by any command that was recorded to a command buffer which is in the <a href=\"#commandbuffers-lifecycle\">pending state</a>."
11716 }
11717 ],
11718 "core": [
11719 {
11720 "vuid": "VUID-vkUpdateDescriptorSets-device-parameter",
11721 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
11722 },
11723 {
11724 "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-parameter",
11725 "text": " If <code>descriptorWriteCount</code> is not <code>0</code>, <code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <code>VkWriteDescriptorSet</code> structures"
11726 },
11727 {
11728 "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorCopies-parameter",
11729 "text": " If <code>descriptorCopyCount</code> is not <code>0</code>, <code>pDescriptorCopies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCopyCount</code> valid <code>VkCopyDescriptorSet</code> structures"
11730 }
11731 ]
11732 },
11733 "VkWriteDescriptorSet": {
11734 "core": [
11735 {
11736 "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00315",
11737 "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"
11738 },
11739 {
11740 "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00316",
11741 "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a binding with a non-zero <code>descriptorCount</code>"
11742 },
11743 {
11744 "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00317",
11745 "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>."
11746 },
11747 {
11748 "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00318",
11749 "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."
11750 },
11751 {
11752 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00319",
11753 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> match the type of <code>dstBinding</code> within <code>dstSet</code>"
11754 },
11755 {
11756 "vuid": "VUID-VkWriteDescriptorSet-dstSet-00320",
11757 "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle"
11758 },
11759 {
11760 "vuid": "VUID-VkWriteDescriptorSet-dstArrayElement-00321",
11761 "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>"
11762 },
11763 {
11764 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00322",
11765 "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"
11766 },
11767 {
11768 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00323",
11769 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, <code>pTexelBufferView</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkBufferView</code> handles"
11770 },
11771 {
11772 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00324",
11773 "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"
11774 },
11775 {
11776 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00325",
11777 "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"
11778 },
11779 {
11780 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00326",
11781 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>imageView</code> and <code>imageLayout</code> members of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> and <a href=\"#VkImageLayout\">VkImageLayout</a>, respectively"
11782 },
11783 {
11784 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01946",
11785 "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"
11786 },
11787 {
11788 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02738",
11789 "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"
11790 },
11791 {
11792 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01948",
11793 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>dstSet</code> was allocated with a layout that included immutable samplers for <code>dstBinding</code>, then the <code>imageView</code> member of each element of <code>pImageInfo</code> which corresponds to an immutable sampler that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion</a> <strong class=\"purple\">must</strong> have been created with a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain with an <em>identically defined</em> <code>VkSamplerYcbcrConversionInfo</code> to the corresponding immutable sampler"
11794 },
11795 {
11796 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01402",
11797 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, for each descriptor that will be accessed via load or store operations the <code>imageLayout</code> member for corresponding elements of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_GENERAL</code>"
11798 },
11799 {
11800 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00327",
11801 "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>"
11802 },
11803 {
11804 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00328",
11805 "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>"
11806 },
11807 {
11808 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00329",
11809 "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"
11810 },
11811 {
11812 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00330",
11813 "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"
11814 },
11815 {
11816 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00331",
11817 "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"
11818 },
11819 {
11820 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00332",
11821 "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>"
11822 },
11823 {
11824 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00333",
11825 "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>"
11826 },
11827 {
11828 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00334",
11829 "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"
11830 },
11831 {
11832 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00335",
11833 "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"
11834 },
11835 {
11836 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00336",
11837 "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"
11838 },
11839 {
11840 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00337",
11841 "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"
11842 },
11843 {
11844 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01403",
11845 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the <code>imageLayout</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a member of the list given in <a href=\"#descriptorsets-sampledimage\">Sampled Image</a> or <a href=\"#descriptorsets-combinedimagesampler\">Combined Image Sampler</a>, corresponding to its type"
11846 },
11847 {
11848 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00338",
11849 "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"
11850 },
11851 {
11852 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00339",
11853 "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"
11854 },
11855 {
11856 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02752",
11857 "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>"
11858 },
11859 {
11860 "vuid": "VUID-VkWriteDescriptorSet-sType-sType",
11861 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET</code>"
11862 },
11863 {
11864 "vuid": "VUID-VkWriteDescriptorSet-pNext-pNext",
11865 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkWriteDescriptorSetAccelerationStructureNV\">VkWriteDescriptorSetAccelerationStructureNV</a> or <a href=\"#VkWriteDescriptorSetInlineUniformBlockEXT\">VkWriteDescriptorSetInlineUniformBlockEXT</a>"
11866 },
11867 {
11868 "vuid": "VUID-VkWriteDescriptorSet-sType-unique",
11869 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
11870 },
11871 {
11872 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-parameter",
11873 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
11874 },
11875 {
11876 "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-arraylength",
11877 "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11878 },
11879 {
11880 "vuid": "VUID-VkWriteDescriptorSet-commonparent",
11881 "text": " Both of <code>dstSet</code>, and the elements of <code>pTexelBufferView</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
11882 }
11883 ],
11884 "(VK_EXT_inline_uniform_block)": [
11885 {
11886 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02219",
11887 "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>"
11888 },
11889 {
11890 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02220",
11891 "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>"
11892 },
11893 {
11894 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02221",
11895 "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>"
11896 }
11897 ],
11898 "(VK_NV_ray_tracing)": [
11899 {
11900 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02382",
11901 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkWriteDescriptorSetAccelerationStructureNV\">VkWriteDescriptorSetAccelerationStructureNV</a> structure whose <code>accelerationStructureCount</code> member equals <code>descriptorCount</code>"
11902 }
11903 ],
11904 "(VK_EXT_descriptor_indexing)": [
11905 {
11906 "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-03048",
11907 "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> have identical <a href=\"#VkDescriptorBindingFlagBitsEXT\">VkDescriptorBindingFlagBitsEXT</a>."
11908 }
11909 ]
11910 },
11911 "VkDescriptorBufferInfo": {
11912 "core": [
11913 {
11914 "vuid": "VUID-VkDescriptorBufferInfo-offset-00340",
11915 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
11916 },
11917 {
11918 "vuid": "VUID-VkDescriptorBufferInfo-range-00341",
11919 "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>"
11920 },
11921 {
11922 "vuid": "VUID-VkDescriptorBufferInfo-range-00342",
11923 "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>"
11924 },
11925 {
11926 "vuid": "VUID-VkDescriptorBufferInfo-buffer-parameter",
11927 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
11928 }
11929 ]
11930 },
11931 "VkDescriptorImageInfo": {
11932 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
11933 {
11934 "vuid": "VUID-VkDescriptorImageInfo-imageView-00343",
11935 "text": " <code>imageView</code> <strong class=\"purple\">must</strong> not be 2D or 2D array image view created from a 3D image"
11936 }
11937 ],
11938 "core": [
11939 {
11940 "vuid": "VUID-VkDescriptorImageInfo-imageView-01976",
11941 "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."
11942 },
11943 {
11944 "vuid": "VUID-VkDescriptorImageInfo-imageLayout-00344",
11945 "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>"
11946 },
11947 {
11948 "vuid": "VUID-VkDescriptorImageInfo-commonparent",
11949 "text": " Both of <code>imageView</code>, and <code>sampler</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
11950 }
11951 ],
11952 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
11953 {
11954 "vuid": "VUID-VkDescriptorImageInfo-sampler-01564",
11955 "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>"
11956 }
11957 ]
11958 },
11959 "VkWriteDescriptorSetInlineUniformBlockEXT": {
11960 "(VK_EXT_inline_uniform_block)": [
11961 {
11962 "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-02222",
11963 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
11964 },
11965 {
11966 "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-sType-sType",
11967 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT</code>"
11968 },
11969 {
11970 "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-pData-parameter",
11971 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
11972 },
11973 {
11974 "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-arraylength",
11975 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
11976 }
11977 ]
11978 },
11979 "VkWriteDescriptorSetAccelerationStructureNV": {
11980 "(VK_NV_ray_tracing)": [
11981 {
11982 "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-02236",
11983 "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be equal to <code>descriptorCount</code> in the extended structure"
11984 },
11985 {
11986 "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-02764",
11987 "text": " Each acceleration structure in <code>pAccelerationStructures</code> must have been created with <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV</code>"
11988 },
11989 {
11990 "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-sType-sType",
11991 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV</code>"
11992 },
11993 {
11994 "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-parameter",
11995 "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <code>VkAccelerationStructureNV</code> handles"
11996 },
11997 {
11998 "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-arraylength",
11999 "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12000 }
12001 ]
12002 },
12003 "VkCopyDescriptorSet": {
12004 "core": [
12005 {
12006 "vuid": "VUID-VkCopyDescriptorSet-srcBinding-00345",
12007 "text": " <code>srcBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>srcSet</code>"
12008 },
12009 {
12010 "vuid": "VUID-VkCopyDescriptorSet-srcArrayElement-00346",
12011 "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>"
12012 },
12013 {
12014 "vuid": "VUID-VkCopyDescriptorSet-dstBinding-00347",
12015 "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>dstSet</code>"
12016 },
12017 {
12018 "vuid": "VUID-VkCopyDescriptorSet-dstArrayElement-00348",
12019 "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>"
12020 },
12021 {
12022 "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02632",
12023 "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>"
12024 },
12025 {
12026 "vuid": "VUID-VkCopyDescriptorSet-srcSet-00349",
12027 "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>"
12028 },
12029 {
12030 "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02753",
12031 "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>"
12032 },
12033 {
12034 "vuid": "VUID-VkCopyDescriptorSet-sType-sType",
12035 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET</code>"
12036 },
12037 {
12038 "vuid": "VUID-VkCopyDescriptorSet-pNext-pNext",
12039 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12040 },
12041 {
12042 "vuid": "VUID-VkCopyDescriptorSet-srcSet-parameter",
12043 "text": " <code>srcSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
12044 },
12045 {
12046 "vuid": "VUID-VkCopyDescriptorSet-dstSet-parameter",
12047 "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
12048 },
12049 {
12050 "vuid": "VUID-VkCopyDescriptorSet-commonparent",
12051 "text": " Both of <code>dstSet</code>, and <code>srcSet</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12052 }
12053 ],
12054 "(VK_EXT_inline_uniform_block)": [
12055 {
12056 "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02223",
12057 "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>"
12058 },
12059 {
12060 "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02224",
12061 "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>"
12062 },
12063 {
12064 "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02225",
12065 "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>"
12066 }
12067 ],
12068 "(VK_EXT_descriptor_indexing)": [
12069 {
12070 "vuid": "VUID-VkCopyDescriptorSet-srcSet-01918",
12071 "text": " If <code>srcSet</code>&#8217;s layout was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set, then <code>dstSet</code>&#8217;s layout <strong class=\"purple\">must</strong> also have been created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set"
12072 },
12073 {
12074 "vuid": "VUID-VkCopyDescriptorSet-srcSet-01919",
12075 "text": " If <code>srcSet</code>&#8217;s layout was created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set, then <code>dstSet</code>&#8217;s layout <strong class=\"purple\">must</strong> also have been created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set"
12076 },
12077 {
12078 "vuid": "VUID-VkCopyDescriptorSet-srcSet-01920",
12079 "text": " If the descriptor pool from which <code>srcSet</code> was allocated was created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set, then the descriptor pool from which <code>dstSet</code> was allocated <strong class=\"purple\">must</strong> also have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set"
12080 },
12081 {
12082 "vuid": "VUID-VkCopyDescriptorSet-srcSet-01921",
12083 "text": " If the descriptor pool from which <code>srcSet</code> was allocated was created without the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set, then the descriptor pool from which <code>dstSet</code> was allocated <strong class=\"purple\">must</strong> also have been created without the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set"
12084 }
12085 ]
12086 },
12087 "vkCreateDescriptorUpdateTemplate": {
12088 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
12089 {
12090 "vuid": "VUID-vkCreateDescriptorUpdateTemplate-device-parameter",
12091 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
12092 },
12093 {
12094 "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pCreateInfo-parameter",
12095 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorUpdateTemplateCreateInfo</code> structure"
12096 },
12097 {
12098 "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pAllocator-parameter",
12099 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
12100 },
12101 {
12102 "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pDescriptorUpdateTemplate-parameter",
12103 "text": " <code>pDescriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorUpdateTemplate</code> handle"
12104 }
12105 ]
12106 },
12107 "VkDescriptorUpdateTemplateCreateInfo": {
12108 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
12109 {
12110 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00350",
12111 "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"
12112 },
12113 {
12114 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-sType-sType",
12115 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO</code>"
12116 },
12117 {
12118 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pNext-pNext",
12119 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12120 },
12121 {
12122 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-flags-zerobitmask",
12123 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
12124 },
12125 {
12126 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pDescriptorUpdateEntries-parameter",
12127 "text": " <code>pDescriptorUpdateEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorUpdateEntryCount</code> valid <code>VkDescriptorUpdateTemplateEntry</code> structures"
12128 },
12129 {
12130 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-parameter",
12131 "text": " <code>templateType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplateType\">VkDescriptorUpdateTemplateType</a> value"
12132 },
12133 {
12134 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorSetLayout-parameter",
12135 "text": " If <code>descriptorSetLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle"
12136 },
12137 {
12138 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorUpdateEntryCount-arraylength",
12139 "text": " <code>descriptorUpdateEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12140 },
12141 {
12142 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-commonparent",
12143 "text": " Both of <code>descriptorSetLayout</code>, and <code>pipelineLayout</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12144 }
12145 ],
12146 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_KHR_push_descriptor)": [
12147 {
12148 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00351",
12149 "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"
12150 },
12151 {
12152 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00352",
12153 "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"
12154 },
12155 {
12156 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00353",
12157 "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>"
12158 }
12159 ]
12160 },
12161 "VkDescriptorUpdateTemplateEntry": {
12162 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
12163 {
12164 "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstBinding-00354",
12165 "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."
12166 },
12167 {
12168 "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstArrayElement-00355",
12169 "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>"
12170 },
12171 {
12172 "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter",
12173 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
12174 }
12175 ],
12176 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_EXT_inline_uniform_block)": [
12177 {
12178 "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226",
12179 "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>"
12180 },
12181 {
12182 "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02227",
12183 "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>"
12184 }
12185 ]
12186 },
12187 "vkDestroyDescriptorUpdateTemplate": {
12188 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
12189 {
12190 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356",
12191 "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"
12192 },
12193 {
12194 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357",
12195 "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>"
12196 },
12197 {
12198 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-device-parameter",
12199 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
12200 },
12201 {
12202 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parameter",
12203 "text": " If <code>descriptorUpdateTemplate</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorUpdateTemplate</code> handle"
12204 },
12205 {
12206 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-pAllocator-parameter",
12207 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
12208 },
12209 {
12210 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parent",
12211 "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>"
12212 }
12213 ]
12214 },
12215 "vkUpdateDescriptorSetWithTemplate": {
12216 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
12217 {
12218 "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-pData-01685",
12219 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory that contains one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplate\">vkCreateDescriptorUpdateTemplate</a>"
12220 },
12221 {
12222 "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-device-parameter",
12223 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
12224 },
12225 {
12226 "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-parameter",
12227 "text": " <code>descriptorSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
12228 },
12229 {
12230 "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parameter",
12231 "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorUpdateTemplate</code> handle"
12232 },
12233 {
12234 "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parent",
12235 "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
12236 }
12237 ]
12238 },
12239 "vkCmdBindDescriptorSets": {
12240 "core": [
12241 {
12242 "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358",
12243 "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>"
12244 },
12245 {
12246 "vuid": "VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359",
12247 "text": " <code>dynamicOffsetCount</code> <strong class=\"purple\">must</strong> be equal to the total number of dynamic descriptors in <code>pDescriptorSets</code>"
12248 },
12249 {
12250 "vuid": "VUID-vkCmdBindDescriptorSets-firstSet-00360",
12251 "text": " The sum of <code>firstSet</code> and <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPipelineLayoutCreateInfo</code>::<code>setLayoutCount</code> provided when <code>layout</code> was created"
12252 },
12253 {
12254 "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361",
12255 "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"
12256 },
12257 {
12258 "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01971",
12259 "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>"
12260 },
12261 {
12262 "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01972",
12263 "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>"
12264 },
12265 {
12266 "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979",
12267 "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"
12268 },
12269 {
12270 "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-parameter",
12271 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12272 },
12273 {
12274 "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter",
12275 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
12276 },
12277 {
12278 "vuid": "VUID-vkCmdBindDescriptorSets-layout-parameter",
12279 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
12280 },
12281 {
12282 "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter",
12283 "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <code>VkDescriptorSet</code> handles"
12284 },
12285 {
12286 "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter",
12287 "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"
12288 },
12289 {
12290 "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-recording",
12291 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12292 },
12293 {
12294 "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-cmdpool",
12295 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
12296 },
12297 {
12298 "vuid": "VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength",
12299 "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12300 },
12301 {
12302 "vuid": "VUID-vkCmdBindDescriptorSets-commonparent",
12303 "text": " Each of <code>commandBuffer</code>, <code>layout</code>, and the elements of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12304 }
12305 ]
12306 },
12307 "vkCmdPushDescriptorSetKHR": {
12308 "(VK_KHR_push_descriptor)": [
12309 {
12310 "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-00363",
12311 "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"
12312 },
12313 {
12314 "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00364",
12315 "text": " <code>set</code> <strong class=\"purple\">must</strong> be less than <code>VkPipelineLayoutCreateInfo</code>::<code>setLayoutCount</code> provided when <code>layout</code> was created"
12316 },
12317 {
12318 "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00365",
12319 "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>"
12320 },
12321 {
12322 "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter",
12323 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12324 },
12325 {
12326 "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter",
12327 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
12328 },
12329 {
12330 "vuid": "VUID-vkCmdPushDescriptorSetKHR-layout-parameter",
12331 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
12332 },
12333 {
12334 "vuid": "VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter",
12335 "text": " <code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <code>VkWriteDescriptorSet</code> structures"
12336 },
12337 {
12338 "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-recording",
12339 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12340 },
12341 {
12342 "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-cmdpool",
12343 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
12344 },
12345 {
12346 "vuid": "VUID-vkCmdPushDescriptorSetKHR-descriptorWriteCount-arraylength",
12347 "text": " <code>descriptorWriteCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12348 },
12349 {
12350 "vuid": "VUID-vkCmdPushDescriptorSetKHR-commonparent",
12351 "text": " Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12352 }
12353 ]
12354 },
12355 "vkCmdPushDescriptorSetWithTemplateKHR": {
12356 "(VK_KHR_push_descriptor)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
12357 {
12358 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-00366",
12359 "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"
12360 },
12361 {
12362 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686",
12363 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory that contains one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplateKHR\">vkCreateDescriptorUpdateTemplateKHR</a>"
12364 },
12365 {
12366 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter",
12367 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12368 },
12369 {
12370 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter",
12371 "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorUpdateTemplate</code> handle"
12372 },
12373 {
12374 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter",
12375 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
12376 },
12377 {
12378 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-recording",
12379 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12380 },
12381 {
12382 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool",
12383 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
12384 },
12385 {
12386 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent",
12387 "text": " Each of <code>commandBuffer</code>, <code>descriptorUpdateTemplate</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12388 }
12389 ]
12390 },
12391 "vkCmdPushConstants": {
12392 "core": [
12393 {
12394 "vuid": "VUID-vkCmdPushConstants-offset-01795",
12395 "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"
12396 },
12397 {
12398 "vuid": "VUID-vkCmdPushConstants-offset-01796",
12399 "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>"
12400 },
12401 {
12402 "vuid": "VUID-vkCmdPushConstants-offset-00368",
12403 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
12404 },
12405 {
12406 "vuid": "VUID-vkCmdPushConstants-size-00369",
12407 "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
12408 },
12409 {
12410 "vuid": "VUID-vkCmdPushConstants-offset-00370",
12411 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>"
12412 },
12413 {
12414 "vuid": "VUID-vkCmdPushConstants-size-00371",
12415 "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>"
12416 },
12417 {
12418 "vuid": "VUID-vkCmdPushConstants-commandBuffer-parameter",
12419 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12420 },
12421 {
12422 "vuid": "VUID-vkCmdPushConstants-layout-parameter",
12423 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
12424 },
12425 {
12426 "vuid": "VUID-vkCmdPushConstants-stageFlags-parameter",
12427 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
12428 },
12429 {
12430 "vuid": "VUID-vkCmdPushConstants-stageFlags-requiredbitmask",
12431 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
12432 },
12433 {
12434 "vuid": "VUID-vkCmdPushConstants-pValues-parameter",
12435 "text": " <code>pValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>size</code> bytes"
12436 },
12437 {
12438 "vuid": "VUID-vkCmdPushConstants-commandBuffer-recording",
12439 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12440 },
12441 {
12442 "vuid": "VUID-vkCmdPushConstants-commandBuffer-cmdpool",
12443 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
12444 },
12445 {
12446 "vuid": "VUID-vkCmdPushConstants-size-arraylength",
12447 "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12448 },
12449 {
12450 "vuid": "VUID-vkCmdPushConstants-commonparent",
12451 "text": " Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12452 }
12453 ]
12454 },
12455 "vkGetBufferDeviceAddressEXT": {
12456 "(VK_EXT_buffer_device_address)": [
12457 {
12458 "vuid": "VUID-vkGetBufferDeviceAddressEXT-None-02598",
12459 "text": " The <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled"
12460 },
12461 {
12462 "vuid": "VUID-vkGetBufferDeviceAddressEXT-device-02599",
12463 "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"
12464 },
12465 {
12466 "vuid": "VUID-vkGetBufferDeviceAddressEXT-device-parameter",
12467 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
12468 },
12469 {
12470 "vuid": "VUID-vkGetBufferDeviceAddressEXT-pInfo-parameter",
12471 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferDeviceAddressInfoEXT</code> structure"
12472 }
12473 ]
12474 },
12475 "VkBufferDeviceAddressInfoEXT": {
12476 "(VK_EXT_buffer_device_address)": [
12477 {
12478 "vuid": "VUID-VkBufferDeviceAddressInfoEXT-buffer-02600",
12479 "text": " If <code>buffer</code> is non-sparse and was not created with the <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT</code> flag, then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
12480 },
12481 {
12482 "vuid": "VUID-VkBufferDeviceAddressInfoEXT-buffer-02601",
12483 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT</code>"
12484 },
12485 {
12486 "vuid": "VUID-VkBufferDeviceAddressInfoEXT-sType-sType",
12487 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT</code>"
12488 },
12489 {
12490 "vuid": "VUID-VkBufferDeviceAddressInfoEXT-pNext-pNext",
12491 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12492 },
12493 {
12494 "vuid": "VUID-VkBufferDeviceAddressInfoEXT-buffer-parameter",
12495 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
12496 }
12497 ]
12498 },
12499 "vkCreateQueryPool": {
12500 "core": [
12501 {
12502 "vuid": "VUID-vkCreateQueryPool-device-parameter",
12503 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
12504 },
12505 {
12506 "vuid": "VUID-vkCreateQueryPool-pCreateInfo-parameter",
12507 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkQueryPoolCreateInfo</code> structure"
12508 },
12509 {
12510 "vuid": "VUID-vkCreateQueryPool-pAllocator-parameter",
12511 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
12512 },
12513 {
12514 "vuid": "VUID-vkCreateQueryPool-pQueryPool-parameter",
12515 "text": " <code>pQueryPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueryPool</code> handle"
12516 }
12517 ]
12518 },
12519 "VkQueryPoolCreateInfo": {
12520 "core": [
12521 {
12522 "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00791",
12523 "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>"
12524 },
12525 {
12526 "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00792",
12527 "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"
12528 },
12529 {
12530 "vuid": "VUID-VkQueryPoolCreateInfo-queryCount-02763",
12531 "text": " <code>queryCount</code> <strong class=\"purple\">must</strong> be greater than 0"
12532 },
12533 {
12534 "vuid": "VUID-VkQueryPoolCreateInfo-sType-sType",
12535 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO</code>"
12536 },
12537 {
12538 "vuid": "VUID-VkQueryPoolCreateInfo-pNext-pNext",
12539 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
12540 },
12541 {
12542 "vuid": "VUID-VkQueryPoolCreateInfo-flags-zerobitmask",
12543 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
12544 },
12545 {
12546 "vuid": "VUID-VkQueryPoolCreateInfo-queryType-parameter",
12547 "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
12548 }
12549 ]
12550 },
12551 "vkDestroyQueryPool": {
12552 "core": [
12553 {
12554 "vuid": "VUID-vkDestroyQueryPool-queryPool-00793",
12555 "text": " All submitted commands that refer to <code>queryPool</code> <strong class=\"purple\">must</strong> have completed execution"
12556 },
12557 {
12558 "vuid": "VUID-vkDestroyQueryPool-queryPool-00794",
12559 "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"
12560 },
12561 {
12562 "vuid": "VUID-vkDestroyQueryPool-queryPool-00795",
12563 "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>"
12564 },
12565 {
12566 "vuid": "VUID-vkDestroyQueryPool-device-parameter",
12567 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
12568 },
12569 {
12570 "vuid": "VUID-vkDestroyQueryPool-queryPool-parameter",
12571 "text": " If <code>queryPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
12572 },
12573 {
12574 "vuid": "VUID-vkDestroyQueryPool-pAllocator-parameter",
12575 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
12576 },
12577 {
12578 "vuid": "VUID-vkDestroyQueryPool-queryPool-parent",
12579 "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>"
12580 }
12581 ]
12582 },
12583 "vkCmdResetQueryPool": {
12584 "core": [
12585 {
12586 "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00796",
12587 "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
12588 },
12589 {
12590 "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00797",
12591 "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>"
12592 },
12593 {
12594 "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-parameter",
12595 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12596 },
12597 {
12598 "vuid": "VUID-vkCmdResetQueryPool-queryPool-parameter",
12599 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
12600 },
12601 {
12602 "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-recording",
12603 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12604 },
12605 {
12606 "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-cmdpool",
12607 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
12608 },
12609 {
12610 "vuid": "VUID-vkCmdResetQueryPool-renderpass",
12611 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
12612 },
12613 {
12614 "vuid": "VUID-vkCmdResetQueryPool-commonparent",
12615 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12616 }
12617 ]
12618 },
12619 "vkResetQueryPoolEXT": {
12620 "(VK_EXT_host_query_reset)": [
12621 {
12622 "vuid": "VUID-vkResetQueryPoolEXT-None-02665",
12623 "text": " The <a href=\"#features-hostQueryReset\">hostQueryReset</a> feature <strong class=\"purple\">must</strong> be enabled"
12624 },
12625 {
12626 "vuid": "VUID-vkResetQueryPoolEXT-firstQuery-02666",
12627 "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
12628 },
12629 {
12630 "vuid": "VUID-vkResetQueryPoolEXT-firstQuery-02667",
12631 "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>"
12632 },
12633 {
12634 "vuid": "VUID-vkResetQueryPoolEXT-firstQuery-02741",
12635 "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"
12636 },
12637 {
12638 "vuid": "VUID-vkResetQueryPoolEXT-firstQuery-02742",
12639 "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>vkResetQueryPoolEXT</code> in other threads"
12640 },
12641 {
12642 "vuid": "VUID-vkResetQueryPoolEXT-device-parameter",
12643 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
12644 },
12645 {
12646 "vuid": "VUID-vkResetQueryPoolEXT-queryPool-parameter",
12647 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
12648 },
12649 {
12650 "vuid": "VUID-vkResetQueryPoolEXT-queryPool-parent",
12651 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
12652 }
12653 ]
12654 },
12655 "vkCmdBeginQuery": {
12656 "core": [
12657 {
12658 "vuid": "VUID-vkCmdBeginQuery-queryPool-01922",
12659 "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>"
12660 },
12661 {
12662 "vuid": "VUID-vkCmdBeginQuery-None-00807",
12663 "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
12664 },
12665 {
12666 "vuid": "VUID-vkCmdBeginQuery-queryType-00800",
12667 "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>"
12668 },
12669 {
12670 "vuid": "VUID-vkCmdBeginQuery-query-00802",
12671 "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
12672 },
12673 {
12674 "vuid": "VUID-vkCmdBeginQuery-queryType-00803",
12675 "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"
12676 },
12677 {
12678 "vuid": "VUID-vkCmdBeginQuery-queryType-00804",
12679 "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"
12680 },
12681 {
12682 "vuid": "VUID-vkCmdBeginQuery-queryType-00805",
12683 "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"
12684 },
12685 {
12686 "vuid": "VUID-vkCmdBeginQuery-commandBuffer-parameter",
12687 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12688 },
12689 {
12690 "vuid": "VUID-vkCmdBeginQuery-queryPool-parameter",
12691 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
12692 },
12693 {
12694 "vuid": "VUID-vkCmdBeginQuery-flags-parameter",
12695 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values"
12696 },
12697 {
12698 "vuid": "VUID-vkCmdBeginQuery-commandBuffer-recording",
12699 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12700 },
12701 {
12702 "vuid": "VUID-vkCmdBeginQuery-commandBuffer-cmdpool",
12703 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
12704 },
12705 {
12706 "vuid": "VUID-vkCmdBeginQuery-commonparent",
12707 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12708 }
12709 ],
12710 "(VK_VERSION_1_1)": [
12711 {
12712 "vuid": "VUID-vkCmdBeginQuery-commandBuffer-01885",
12713 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
12714 }
12715 ],
12716 "(VK_VERSION_1_1,VK_KHR_multiview)": [
12717 {
12718 "vuid": "VUID-vkCmdBeginQuery-query-00808",
12719 "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>"
12720 }
12721 ],
12722 "(VK_EXT_transform_feedback)": [
12723 {
12724 "vuid": "VUID-vkCmdBeginQuery-queryType-02327",
12725 "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"
12726 },
12727 {
12728 "vuid": "VUID-vkCmdBeginQuery-queryType-02328",
12729 "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"
12730 }
12731 ]
12732 },
12733 "vkCmdBeginQueryIndexedEXT": {
12734 "(VK_EXT_transform_feedback)": [
12735 {
12736 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-01922",
12737 "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>"
12738 },
12739 {
12740 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-00807",
12741 "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
12742 },
12743 {
12744 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00800",
12745 "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>"
12746 },
12747 {
12748 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-00802",
12749 "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
12750 },
12751 {
12752 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00803",
12753 "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"
12754 },
12755 {
12756 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00804",
12757 "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"
12758 },
12759 {
12760 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00805",
12761 "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"
12762 },
12763 {
12764 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02338",
12765 "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"
12766 },
12767 {
12768 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02339",
12769 "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>"
12770 },
12771 {
12772 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02340",
12773 "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"
12774 },
12775 {
12776 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02341",
12777 "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"
12778 },
12779 {
12780 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter",
12781 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12782 },
12783 {
12784 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter",
12785 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
12786 },
12787 {
12788 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-flags-parameter",
12789 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values"
12790 },
12791 {
12792 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-recording",
12793 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12794 },
12795 {
12796 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-cmdpool",
12797 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
12798 },
12799 {
12800 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commonparent",
12801 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12802 }
12803 ],
12804 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
12805 {
12806 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-01885",
12807 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
12808 }
12809 ],
12810 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
12811 {
12812 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-00808",
12813 "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>"
12814 }
12815 ]
12816 },
12817 "vkCmdEndQuery": {
12818 "core": [
12819 {
12820 "vuid": "VUID-vkCmdEndQuery-None-01923",
12821 "text": " All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>"
12822 },
12823 {
12824 "vuid": "VUID-vkCmdEndQuery-query-00810",
12825 "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
12826 },
12827 {
12828 "vuid": "VUID-vkCmdEndQuery-commandBuffer-parameter",
12829 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12830 },
12831 {
12832 "vuid": "VUID-vkCmdEndQuery-queryPool-parameter",
12833 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
12834 },
12835 {
12836 "vuid": "VUID-vkCmdEndQuery-commandBuffer-recording",
12837 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12838 },
12839 {
12840 "vuid": "VUID-vkCmdEndQuery-commandBuffer-cmdpool",
12841 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
12842 },
12843 {
12844 "vuid": "VUID-vkCmdEndQuery-commonparent",
12845 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12846 }
12847 ],
12848 "(VK_VERSION_1_1)": [
12849 {
12850 "vuid": "VUID-vkCmdEndQuery-commandBuffer-01886",
12851 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
12852 }
12853 ],
12854 "(VK_VERSION_1_1,VK_KHR_multiview)": [
12855 {
12856 "vuid": "VUID-vkCmdEndQuery-query-00812",
12857 "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>"
12858 }
12859 ]
12860 },
12861 "vkCmdEndQueryIndexedEXT": {
12862 "(VK_EXT_transform_feedback)": [
12863 {
12864 "vuid": "VUID-vkCmdEndQueryIndexedEXT-None-02342",
12865 "text": " All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>"
12866 },
12867 {
12868 "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02343",
12869 "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
12870 },
12871 {
12872 "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02346",
12873 "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>"
12874 },
12875 {
12876 "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02347",
12877 "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"
12878 },
12879 {
12880 "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02723",
12881 "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"
12882 },
12883 {
12884 "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter",
12885 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
12886 },
12887 {
12888 "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter",
12889 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
12890 },
12891 {
12892 "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-recording",
12893 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
12894 },
12895 {
12896 "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-cmdpool",
12897 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
12898 },
12899 {
12900 "vuid": "VUID-vkCmdEndQueryIndexedEXT-commonparent",
12901 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
12902 }
12903 ],
12904 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
12905 {
12906 "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344",
12907 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
12908 }
12909 ],
12910 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
12911 {
12912 "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02345",
12913 "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>"
12914 }
12915 ]
12916 },
12917 "vkGetQueryPoolResults": {
12918 "core": [
12919 {
12920 "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00813",
12921 "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
12922 },
12923 {
12924 "vuid": "VUID-vkGetQueryPoolResults-flags-00814",
12925 "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>"
12926 },
12927 {
12928 "vuid": "VUID-vkGetQueryPoolResults-flags-00815",
12929 "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>"
12930 },
12931 {
12932 "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00816",
12933 "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>"
12934 },
12935 {
12936 "vuid": "VUID-vkGetQueryPoolResults-dataSize-00817",
12937 "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>"
12938 },
12939 {
12940 "vuid": "VUID-vkGetQueryPoolResults-queryType-00818",
12941 "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>"
12942 },
12943 {
12944 "vuid": "VUID-vkGetQueryPoolResults-device-parameter",
12945 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
12946 },
12947 {
12948 "vuid": "VUID-vkGetQueryPoolResults-queryPool-parameter",
12949 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
12950 },
12951 {
12952 "vuid": "VUID-vkGetQueryPoolResults-pData-parameter",
12953 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
12954 },
12955 {
12956 "vuid": "VUID-vkGetQueryPoolResults-flags-parameter",
12957 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values"
12958 },
12959 {
12960 "vuid": "VUID-vkGetQueryPoolResults-dataSize-arraylength",
12961 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
12962 },
12963 {
12964 "vuid": "VUID-vkGetQueryPoolResults-queryPool-parent",
12965 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
12966 }
12967 ]
12968 },
12969 "vkCmdCopyQueryPoolResults": {
12970 "core": [
12971 {
12972 "vuid": "VUID-vkCmdCopyQueryPoolResults-dstOffset-00819",
12973 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
12974 },
12975 {
12976 "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00820",
12977 "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
12978 },
12979 {
12980 "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00821",
12981 "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>"
12982 },
12983 {
12984 "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00822",
12985 "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>"
12986 },
12987 {
12988 "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00823",
12989 "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>"
12990 },
12991 {
12992 "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824",
12993 "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>"
12994 },
12995 {
12996 "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825",
12997 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
12998 },
12999 {
13000 "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826",
13001 "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"
13002 },
13003 {
13004 "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-00827",
13005 "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>"
13006 },
13007 {
13008 "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter",
13009 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
13010 },
13011 {
13012 "vuid": "VUID-vkCmdCopyQueryPoolResults-queryPool-parameter",
13013 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
13014 },
13015 {
13016 "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter",
13017 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
13018 },
13019 {
13020 "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-parameter",
13021 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values"
13022 },
13023 {
13024 "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-recording",
13025 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
13026 },
13027 {
13028 "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool",
13029 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
13030 },
13031 {
13032 "vuid": "VUID-vkCmdCopyQueryPoolResults-renderpass",
13033 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
13034 },
13035 {
13036 "vuid": "VUID-vkCmdCopyQueryPoolResults-commonparent",
13037 "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
13038 }
13039 ],
13040 "(VK_INTEL_performance_query)": [
13041 {
13042 "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-02734",
13043 "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>."
13044 }
13045 ]
13046 },
13047 "vkCmdWriteTimestamp": {
13048 "core": [
13049 {
13050 "vuid": "VUID-vkCmdWriteTimestamp-queryPool-01416",
13051 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> of <code>VK_QUERY_TYPE_TIMESTAMP</code>"
13052 },
13053 {
13054 "vuid": "VUID-vkCmdWriteTimestamp-queryPool-00828",
13055 "text": " The query identified by <code>queryPool</code> and <code>query</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>"
13056 },
13057 {
13058 "vuid": "VUID-vkCmdWriteTimestamp-timestampValidBits-00829",
13059 "text": " The command pool&#8217;s queue family <strong class=\"purple\">must</strong> support a non-zero <code>timestampValidBits</code>"
13060 },
13061 {
13062 "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-parameter",
13063 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
13064 },
13065 {
13066 "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-parameter",
13067 "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value"
13068 },
13069 {
13070 "vuid": "VUID-vkCmdWriteTimestamp-queryPool-parameter",
13071 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
13072 },
13073 {
13074 "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-recording",
13075 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
13076 },
13077 {
13078 "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-cmdpool",
13079 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
13080 },
13081 {
13082 "vuid": "VUID-vkCmdWriteTimestamp-commonparent",
13083 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
13084 }
13085 ],
13086 "(VK_VERSION_1_1,VK_KHR_multiview)": [
13087 {
13088 "vuid": "VUID-vkCmdWriteTimestamp-None-00830",
13089 "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
13090 },
13091 {
13092 "vuid": "VUID-vkCmdWriteTimestamp-query-00831",
13093 "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>"
13094 }
13095 ]
13096 },
13097 "vkInitializePerformanceApiINTEL": {
13098 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13099 {
13100 "vuid": "VUID-vkInitializePerformanceApiINTEL-device-parameter",
13101 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
13102 },
13103 {
13104 "vuid": "VUID-vkInitializePerformanceApiINTEL-pInitializeInfo-parameter",
13105 "text": " <code>pInitializeInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkInitializePerformanceApiInfoINTEL</code> structure"
13106 }
13107 ]
13108 },
13109 "VkInitializePerformanceApiInfoINTEL": {
13110 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13111 {
13112 "vuid": "VUID-VkInitializePerformanceApiInfoINTEL-sType-sType",
13113 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL</code>"
13114 },
13115 {
13116 "vuid": "VUID-VkInitializePerformanceApiInfoINTEL-pNext-pNext",
13117 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
13118 }
13119 ]
13120 },
13121 "vkUninitializePerformanceApiINTEL": {
13122 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13123 {
13124 "vuid": "VUID-vkUninitializePerformanceApiINTEL-device-parameter",
13125 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
13126 }
13127 ]
13128 },
13129 "vkGetPerformanceParameterINTEL": {
13130 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13131 {
13132 "vuid": "VUID-vkGetPerformanceParameterINTEL-device-parameter",
13133 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
13134 },
13135 {
13136 "vuid": "VUID-vkGetPerformanceParameterINTEL-parameter-parameter",
13137 "text": " <code>parameter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceParameterTypeINTEL\">VkPerformanceParameterTypeINTEL</a> value"
13138 },
13139 {
13140 "vuid": "VUID-vkGetPerformanceParameterINTEL-pValue-parameter",
13141 "text": " <code>pValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPerformanceValueINTEL</code> structure"
13142 }
13143 ]
13144 },
13145 "VkPerformanceValueINTEL": {
13146 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13147 {
13148 "vuid": "VUID-VkPerformanceValueINTEL-type-parameter",
13149 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceValueTypeINTEL\">VkPerformanceValueTypeINTEL</a> value"
13150 },
13151 {
13152 "vuid": "VUID-VkPerformanceValueINTEL-data-parameter",
13153 "text": " <code>data</code> <strong class=\"purple\">must</strong> be a valid <code>VkPerformanceValueDataINTEL</code> union"
13154 }
13155 ]
13156 },
13157 "VkPerformanceValueDataINTEL": {
13158 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13159 {
13160 "vuid": "VUID-VkPerformanceValueDataINTEL-valueString-parameter",
13161 "text": " <code>valueString</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid"
13162 }
13163 ]
13164 },
13165 "VkQueryPoolCreateInfoINTEL": {
13166 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13167 {
13168 "vuid": "VUID-VkQueryPoolCreateInfoINTEL-sType-sType",
13169 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL</code>"
13170 },
13171 {
13172 "vuid": "VUID-VkQueryPoolCreateInfoINTEL-pNext-pNext",
13173 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
13174 },
13175 {
13176 "vuid": "VUID-VkQueryPoolCreateInfoINTEL-performanceCountersSampling-parameter",
13177 "text": " <code>performanceCountersSampling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPoolSamplingModeINTEL\">VkQueryPoolSamplingModeINTEL</a> value"
13178 }
13179 ]
13180 },
13181 "vkCmdSetPerformanceMarkerINTEL": {
13182 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13183 {
13184 "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-parameter",
13185 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
13186 },
13187 {
13188 "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-pMarkerInfo-parameter",
13189 "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPerformanceMarkerInfoINTEL</code> structure"
13190 },
13191 {
13192 "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-recording",
13193 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
13194 },
13195 {
13196 "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-cmdpool",
13197 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
13198 }
13199 ]
13200 },
13201 "VkPerformanceMarkerInfoINTEL": {
13202 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13203 {
13204 "vuid": "VUID-VkPerformanceMarkerInfoINTEL-sType-sType",
13205 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL</code>"
13206 },
13207 {
13208 "vuid": "VUID-VkPerformanceMarkerInfoINTEL-pNext-pNext",
13209 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
13210 }
13211 ]
13212 },
13213 "vkCmdSetPerformanceStreamMarkerINTEL": {
13214 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13215 {
13216 "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-parameter",
13217 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
13218 },
13219 {
13220 "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-pMarkerInfo-parameter",
13221 "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPerformanceStreamMarkerInfoINTEL</code> structure"
13222 },
13223 {
13224 "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-recording",
13225 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
13226 },
13227 {
13228 "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-cmdpool",
13229 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
13230 }
13231 ]
13232 },
13233 "VkPerformanceStreamMarkerInfoINTEL": {
13234 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13235 {
13236 "vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-marker-02735",
13237 "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>."
13238 },
13239 {
13240 "vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-sType-sType",
13241 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL</code>"
13242 },
13243 {
13244 "vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-pNext-pNext",
13245 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
13246 }
13247 ]
13248 },
13249 "vkCmdSetPerformanceOverrideINTEL": {
13250 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13251 {
13252 "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-02736",
13253 "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>."
13254 },
13255 {
13256 "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-parameter",
13257 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
13258 },
13259 {
13260 "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-parameter",
13261 "text": " <code>pOverrideInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPerformanceOverrideInfoINTEL</code> structure"
13262 },
13263 {
13264 "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-recording",
13265 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
13266 },
13267 {
13268 "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-cmdpool",
13269 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
13270 }
13271 ]
13272 },
13273 "VkPerformanceOverrideInfoINTEL": {
13274 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13275 {
13276 "vuid": "VUID-VkPerformanceOverrideInfoINTEL-sType-sType",
13277 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL</code>"
13278 },
13279 {
13280 "vuid": "VUID-VkPerformanceOverrideInfoINTEL-pNext-pNext",
13281 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
13282 },
13283 {
13284 "vuid": "VUID-VkPerformanceOverrideInfoINTEL-type-parameter",
13285 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceOverrideTypeINTEL\">VkPerformanceOverrideTypeINTEL</a> value"
13286 }
13287 ]
13288 },
13289 "vkAcquirePerformanceConfigurationINTEL": {
13290 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13291 {
13292 "vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-device-parameter",
13293 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
13294 },
13295 {
13296 "vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-pAcquireInfo-parameter",
13297 "text": " <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPerformanceConfigurationAcquireInfoINTEL</code> structure"
13298 },
13299 {
13300 "vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-pConfiguration-parameter",
13301 "text": " <code>pConfiguration</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPerformanceConfigurationINTEL</code> handle"
13302 }
13303 ]
13304 },
13305 "VkPerformanceConfigurationAcquireInfoINTEL": {
13306 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13307 {
13308 "vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-sType-sType",
13309 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL</code>"
13310 },
13311 {
13312 "vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-pNext-pNext",
13313 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
13314 },
13315 {
13316 "vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-type-parameter",
13317 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceConfigurationTypeINTEL\">VkPerformanceConfigurationTypeINTEL</a> value"
13318 }
13319 ]
13320 },
13321 "vkQueueSetPerformanceConfigurationINTEL": {
13322 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13323 {
13324 "vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-queue-parameter",
13325 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
13326 },
13327 {
13328 "vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-configuration-parameter",
13329 "text": " <code>configuration</code> <strong class=\"purple\">must</strong> be a valid <code>VkPerformanceConfigurationINTEL</code> handle"
13330 },
13331 {
13332 "vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-commonparent",
13333 "text": " Both of <code>configuration</code>, and <code>queue</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
13334 }
13335 ]
13336 },
13337 "vkReleasePerformanceConfigurationINTEL": {
13338 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
13339 {
13340 "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-02737",
13341 "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>."
13342 },
13343 {
13344 "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-device-parameter",
13345 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
13346 },
13347 {
13348 "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-parameter",
13349 "text": " <code>configuration</code> <strong class=\"purple\">must</strong> be a valid <code>VkPerformanceConfigurationINTEL</code> handle"
13350 },
13351 {
13352 "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-parent",
13353 "text": " <code>configuration</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
13354 }
13355 ]
13356 },
13357 "vkCmdClearColorImage": {
13358 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
13359 {
13360 "vuid": "VUID-vkCmdClearColorImage-image-01993",
13361 "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>."
13362 }
13363 ],
13364 "core": [
13365 {
13366 "vuid": "VUID-vkCmdClearColorImage-image-00002",
13367 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
13368 },
13369 {
13370 "vuid": "VUID-vkCmdClearColorImage-image-00003",
13371 "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"
13372 },
13373 {
13374 "vuid": "VUID-vkCmdClearColorImage-imageLayout-00004",
13375 "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>"
13376 },
13377 {
13378 "vuid": "VUID-vkCmdClearColorImage-aspectMask-02498",
13379 "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>"
13380 },
13381 {
13382 "vuid": "VUID-vkCmdClearColorImage-baseMipLevel-01470",
13383 "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"
13384 },
13385 {
13386 "vuid": "VUID-vkCmdClearColorImage-pRanges-01692",
13387 "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"
13388 },
13389 {
13390 "vuid": "VUID-vkCmdClearColorImage-baseArrayLayer-01472",
13391 "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"
13392 },
13393 {
13394 "vuid": "VUID-vkCmdClearColorImage-pRanges-01693",
13395 "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"
13396 },
13397 {
13398 "vuid": "VUID-vkCmdClearColorImage-image-00007",
13399 "text": " <code>image</code> <strong class=\"purple\">must</strong> not have a compressed or depth/stencil format"
13400 },
13401 {
13402 "vuid": "VUID-vkCmdClearColorImage-commandBuffer-parameter",
13403 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
13404 },
13405 {
13406 "vuid": "VUID-vkCmdClearColorImage-image-parameter",
13407 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
13408 },
13409 {
13410 "vuid": "VUID-vkCmdClearColorImage-imageLayout-parameter",
13411 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
13412 },
13413 {
13414 "vuid": "VUID-vkCmdClearColorImage-pColor-parameter",
13415 "text": " <code>pColor</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkClearColorValue</code> union"
13416 },
13417 {
13418 "vuid": "VUID-vkCmdClearColorImage-pRanges-parameter",
13419 "text": " <code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <code>VkImageSubresourceRange</code> structures"
13420 },
13421 {
13422 "vuid": "VUID-vkCmdClearColorImage-commandBuffer-recording",
13423 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
13424 },
13425 {
13426 "vuid": "VUID-vkCmdClearColorImage-commandBuffer-cmdpool",
13427 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
13428 },
13429 {
13430 "vuid": "VUID-vkCmdClearColorImage-renderpass",
13431 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
13432 },
13433 {
13434 "vuid": "VUID-vkCmdClearColorImage-rangeCount-arraylength",
13435 "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13436 },
13437 {
13438 "vuid": "VUID-vkCmdClearColorImage-commonparent",
13439 "text": " Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
13440 }
13441 ],
13442 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
13443 {
13444 "vuid": "VUID-vkCmdClearColorImage-image-01545",
13445 "text": " <code>image</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>"
13446 }
13447 ],
13448 "!(VK_KHR_shared_presentable_image)": [
13449 {
13450 "vuid": "VUID-vkCmdClearColorImage-imageLayout-00005",
13451 "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>"
13452 }
13453 ],
13454 "(VK_KHR_shared_presentable_image)": [
13455 {
13456 "vuid": "VUID-vkCmdClearColorImage-imageLayout-01394",
13457 "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>"
13458 }
13459 ],
13460 "(VK_VERSION_1_1)": [
13461 {
13462 "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01805",
13463 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image"
13464 },
13465 {
13466 "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01806",
13467 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image"
13468 }
13469 ]
13470 },
13471 "vkCmdClearDepthStencilImage": {
13472 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
13473 {
13474 "vuid": "VUID-vkCmdClearDepthStencilImage-image-01994",
13475 "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>."
13476 }
13477 ],
13478 "!(VK_EXT_separate_stencil_usage)": [
13479 {
13480 "vuid": "VUID-vkCmdClearDepthStencilImage-image-00009",
13481 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
13482 }
13483 ],
13484 "(VK_EXT_separate_stencil_usage)": [
13485 {
13486 "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02658",
13487 "text": " If any element of <code>pRanges.aspect</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, and <code>image</code> was created with <a href=\"#VkImageStencilUsageCreateInfoEXT\">separate stencil usage</a>, <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>::<code>stencilUsage</code> used to create <code>image</code>"
13488 },
13489 {
13490 "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02659",
13491 "text": " If any element of <code>pRanges.aspect</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, and <code>image</code> was not created with <a href=\"#VkImageStencilUsageCreateInfoEXT\">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>"
13492 },
13493 {
13494 "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02660",
13495 "text": " If any element of <code>pRanges.aspect</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>"
13496 }
13497 ],
13498 "core": [
13499 {
13500 "vuid": "VUID-vkCmdClearDepthStencilImage-image-00010",
13501 "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"
13502 },
13503 {
13504 "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00011",
13505 "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>"
13506 },
13507 {
13508 "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00012",
13509 "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>"
13510 },
13511 {
13512 "vuid": "VUID-vkCmdClearDepthStencilImage-aspectMask-02499",
13513 "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each only include <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> if the image format has a depth component"
13514 },
13515 {
13516 "vuid": "VUID-vkCmdClearDepthStencilImage-aspectMask-02500",
13517 "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each only include <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> if the image format has a stencil component"
13518 },
13519 {
13520 "vuid": "VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474",
13521 "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"
13522 },
13523 {
13524 "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01694",
13525 "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"
13526 },
13527 {
13528 "vuid": "VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476",
13529 "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"
13530 },
13531 {
13532 "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01695",
13533 "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"
13534 },
13535 {
13536 "vuid": "VUID-vkCmdClearDepthStencilImage-image-00014",
13537 "text": " <code>image</code> <strong class=\"purple\">must</strong> have a depth/stencil format"
13538 },
13539 {
13540 "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter",
13541 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
13542 },
13543 {
13544 "vuid": "VUID-vkCmdClearDepthStencilImage-image-parameter",
13545 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
13546 },
13547 {
13548 "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-parameter",
13549 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
13550 },
13551 {
13552 "vuid": "VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter",
13553 "text": " <code>pDepthStencil</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkClearDepthStencilValue</code> structure"
13554 },
13555 {
13556 "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-parameter",
13557 "text": " <code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <code>VkImageSubresourceRange</code> structures"
13558 },
13559 {
13560 "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-recording",
13561 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
13562 },
13563 {
13564 "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-cmdpool",
13565 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
13566 },
13567 {
13568 "vuid": "VUID-vkCmdClearDepthStencilImage-renderpass",
13569 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
13570 },
13571 {
13572 "vuid": "VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength",
13573 "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13574 },
13575 {
13576 "vuid": "VUID-vkCmdClearDepthStencilImage-commonparent",
13577 "text": " Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
13578 }
13579 ],
13580 "(VK_VERSION_1_1)": [
13581 {
13582 "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01807",
13583 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image"
13584 },
13585 {
13586 "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01808",
13587 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image"
13588 }
13589 ]
13590 },
13591 "vkCmdClearAttachments": {
13592 "core": [
13593 {
13594 "vuid": "VUID-vkCmdClearAttachments-aspectMask-02501",
13595 "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."
13596 },
13597 {
13598 "vuid": "VUID-vkCmdClearAttachments-aspectMask-02502",
13599 "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"
13600 },
13601 {
13602 "vuid": "VUID-vkCmdClearAttachments-aspectMask-02503",
13603 "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"
13604 },
13605 {
13606 "vuid": "VUID-vkCmdClearAttachments-rect-02682",
13607 "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>"
13608 },
13609 {
13610 "vuid": "VUID-vkCmdClearAttachments-rect-02683",
13611 "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>"
13612 },
13613 {
13614 "vuid": "VUID-vkCmdClearAttachments-pRects-00016",
13615 "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"
13616 },
13617 {
13618 "vuid": "VUID-vkCmdClearAttachments-pRects-00017",
13619 "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"
13620 },
13621 {
13622 "vuid": "VUID-vkCmdClearAttachments-layerCount-01934",
13623 "text": " The <code>layerCount</code> member of each element of <code>pRects</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
13624 },
13625 {
13626 "vuid": "VUID-vkCmdClearAttachments-commandBuffer-parameter",
13627 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
13628 },
13629 {
13630 "vuid": "VUID-vkCmdClearAttachments-pAttachments-parameter",
13631 "text": " <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkClearAttachment</code> structures"
13632 },
13633 {
13634 "vuid": "VUID-vkCmdClearAttachments-pRects-parameter",
13635 "text": " <code>pRects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rectCount</code> <code>VkClearRect</code> structures"
13636 },
13637 {
13638 "vuid": "VUID-vkCmdClearAttachments-commandBuffer-recording",
13639 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
13640 },
13641 {
13642 "vuid": "VUID-vkCmdClearAttachments-commandBuffer-cmdpool",
13643 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
13644 },
13645 {
13646 "vuid": "VUID-vkCmdClearAttachments-renderpass",
13647 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
13648 },
13649 {
13650 "vuid": "VUID-vkCmdClearAttachments-attachmentCount-arraylength",
13651 "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13652 },
13653 {
13654 "vuid": "VUID-vkCmdClearAttachments-rectCount-arraylength",
13655 "text": " <code>rectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13656 }
13657 ],
13658 "(VK_VERSION_1_1)": [
13659 {
13660 "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02504",
13661 "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."
13662 },
13663 {
13664 "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02505",
13665 "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."
13666 }
13667 ],
13668 "(VK_VERSION_1_1,VK_KHR_multiview)": [
13669 {
13670 "vuid": "VUID-vkCmdClearAttachments-baseArrayLayer-00018",
13671 "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."
13672 }
13673 ]
13674 },
13675 "VkClearAttachment": {
13676 "core": [
13677 {
13678 "vuid": "VUID-VkClearAttachment-aspectMask-00019",
13679 "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>"
13680 },
13681 {
13682 "vuid": "VUID-VkClearAttachment-aspectMask-00020",
13683 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
13684 },
13685 {
13686 "vuid": "VUID-VkClearAttachment-clearValue-00021",
13687 "text": " <code>clearValue</code> <strong class=\"purple\">must</strong> be a valid <code>VkClearValue</code> union"
13688 },
13689 {
13690 "vuid": "VUID-VkClearAttachment-aspectMask-parameter",
13691 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
13692 },
13693 {
13694 "vuid": "VUID-VkClearAttachment-aspectMask-requiredbitmask",
13695 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
13696 }
13697 ],
13698 "(VK_EXT_image_drm_format_modifier)": [
13699 {
13700 "vuid": "VUID-VkClearAttachment-aspectMask-02246",
13701 "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>."
13702 }
13703 ]
13704 },
13705 "VkClearDepthStencilValue": {
13706 "(VK_EXT_depth_range_unrestricted)": [
13707 {
13708 "vuid": "VUID-VkClearDepthStencilValue-depth-00022",
13709 "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"
13710 }
13711 ],
13712 "!(VK_EXT_depth_range_unrestricted)": [
13713 {
13714 "vuid": "VUID-VkClearDepthStencilValue-depth-02506",
13715 "text": " <code>depth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
13716 }
13717 ]
13718 },
13719 "vkCmdFillBuffer": {
13720 "core": [
13721 {
13722 "vuid": "VUID-vkCmdFillBuffer-dstOffset-00024",
13723 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
13724 },
13725 {
13726 "vuid": "VUID-vkCmdFillBuffer-dstOffset-00025",
13727 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
13728 },
13729 {
13730 "vuid": "VUID-vkCmdFillBuffer-size-00026",
13731 "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>"
13732 },
13733 {
13734 "vuid": "VUID-vkCmdFillBuffer-size-00027",
13735 "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>"
13736 },
13737 {
13738 "vuid": "VUID-vkCmdFillBuffer-size-00028",
13739 "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>"
13740 },
13741 {
13742 "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00029",
13743 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
13744 },
13745 {
13746 "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00031",
13747 "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"
13748 },
13749 {
13750 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-parameter",
13751 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
13752 },
13753 {
13754 "vuid": "VUID-vkCmdFillBuffer-dstBuffer-parameter",
13755 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
13756 },
13757 {
13758 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-recording",
13759 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
13760 },
13761 {
13762 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-cmdpool",
13763 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics or compute operations"
13764 },
13765 {
13766 "vuid": "VUID-vkCmdFillBuffer-renderpass",
13767 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
13768 },
13769 {
13770 "vuid": "VUID-vkCmdFillBuffer-commonparent",
13771 "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
13772 }
13773 ],
13774 "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
13775 {
13776 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-00030",
13777 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics or compute operations"
13778 }
13779 ],
13780 "(VK_VERSION_1_1)": [
13781 {
13782 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01811",
13783 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
13784 },
13785 {
13786 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01812",
13787 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
13788 }
13789 ]
13790 },
13791 "vkCmdUpdateBuffer": {
13792 "core": [
13793 {
13794 "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00032",
13795 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
13796 },
13797 {
13798 "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00033",
13799 "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>"
13800 },
13801 {
13802 "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00034",
13803 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
13804 },
13805 {
13806 "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00035",
13807 "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"
13808 },
13809 {
13810 "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00036",
13811 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
13812 },
13813 {
13814 "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00037",
13815 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be less than or equal to <code>65536</code>"
13816 },
13817 {
13818 "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00038",
13819 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
13820 },
13821 {
13822 "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-parameter",
13823 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
13824 },
13825 {
13826 "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-parameter",
13827 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
13828 },
13829 {
13830 "vuid": "VUID-vkCmdUpdateBuffer-pData-parameter",
13831 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
13832 },
13833 {
13834 "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-recording",
13835 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
13836 },
13837 {
13838 "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-cmdpool",
13839 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
13840 },
13841 {
13842 "vuid": "VUID-vkCmdUpdateBuffer-renderpass",
13843 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
13844 },
13845 {
13846 "vuid": "VUID-vkCmdUpdateBuffer-dataSize-arraylength",
13847 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13848 },
13849 {
13850 "vuid": "VUID-vkCmdUpdateBuffer-commonparent",
13851 "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
13852 }
13853 ],
13854 "(VK_VERSION_1_1)": [
13855 {
13856 "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01813",
13857 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
13858 },
13859 {
13860 "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01814",
13861 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
13862 }
13863 ]
13864 },
13865 "vkCmdCopyBuffer": {
13866 "core": [
13867 {
13868 "vuid": "VUID-vkCmdCopyBuffer-srcOffset-00113",
13869 "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>"
13870 },
13871 {
13872 "vuid": "VUID-vkCmdCopyBuffer-dstOffset-00114",
13873 "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>"
13874 },
13875 {
13876 "vuid": "VUID-vkCmdCopyBuffer-size-00115",
13877 "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>"
13878 },
13879 {
13880 "vuid": "VUID-vkCmdCopyBuffer-size-00116",
13881 "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>"
13882 },
13883 {
13884 "vuid": "VUID-vkCmdCopyBuffer-pRegions-00117",
13885 "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"
13886 },
13887 {
13888 "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00118",
13889 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag"
13890 },
13891 {
13892 "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00119",
13893 "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"
13894 },
13895 {
13896 "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00120",
13897 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
13898 },
13899 {
13900 "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00121",
13901 "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"
13902 },
13903 {
13904 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-parameter",
13905 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
13906 },
13907 {
13908 "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-parameter",
13909 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
13910 },
13911 {
13912 "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-parameter",
13913 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
13914 },
13915 {
13916 "vuid": "VUID-vkCmdCopyBuffer-pRegions-parameter",
13917 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkBufferCopy</code> structures"
13918 },
13919 {
13920 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-recording",
13921 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
13922 },
13923 {
13924 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-cmdpool",
13925 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
13926 },
13927 {
13928 "vuid": "VUID-vkCmdCopyBuffer-renderpass",
13929 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
13930 },
13931 {
13932 "vuid": "VUID-vkCmdCopyBuffer-regionCount-arraylength",
13933 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13934 },
13935 {
13936 "vuid": "VUID-vkCmdCopyBuffer-commonparent",
13937 "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
13938 }
13939 ],
13940 "(VK_VERSION_1_1)": [
13941 {
13942 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01822",
13943 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
13944 },
13945 {
13946 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01823",
13947 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
13948 },
13949 {
13950 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01824",
13951 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
13952 }
13953 ]
13954 },
13955 "VkBufferCopy": {
13956 "core": [
13957 {
13958 "vuid": "VUID-VkBufferCopy-size-01988",
13959 "text": " The <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
13960 }
13961 ]
13962 },
13963 "vkCmdCopyImage": {
13964 "core": [
13965 {
13966 "vuid": "VUID-vkCmdCopyImage-pRegions-00122",
13967 "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>"
13968 },
13969 {
13970 "vuid": "VUID-vkCmdCopyImage-pRegions-00123",
13971 "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>"
13972 },
13973 {
13974 "vuid": "VUID-vkCmdCopyImage-pRegions-00124",
13975 "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"
13976 },
13977 {
13978 "vuid": "VUID-vkCmdCopyImage-srcImage-00126",
13979 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
13980 },
13981 {
13982 "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00128",
13983 "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>"
13984 },
13985 {
13986 "vuid": "VUID-vkCmdCopyImage-dstImage-00131",
13987 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
13988 },
13989 {
13990 "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00133",
13991 "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>"
13992 },
13993 {
13994 "vuid": "VUID-vkCmdCopyImage-srcImage-00136",
13995 "text": " The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> match"
13996 },
13997 {
13998 "vuid": "VUID-vkCmdCopyImage-srcSubresource-01696",
13999 "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"
14000 },
14001 {
14002 "vuid": "VUID-vkCmdCopyImage-dstSubresource-01697",
14003 "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"
14004 },
14005 {
14006 "vuid": "VUID-vkCmdCopyImage-srcSubresource-01698",
14007 "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"
14008 },
14009 {
14010 "vuid": "VUID-vkCmdCopyImage-dstSubresource-01699",
14011 "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"
14012 },
14013 {
14014 "vuid": "VUID-vkCmdCopyImage-srcOffset-01783",
14015 "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>"
14016 },
14017 {
14018 "vuid": "VUID-vkCmdCopyImage-dstOffset-01784",
14019 "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>"
14020 },
14021 {
14022 "vuid": "VUID-vkCmdCopyImage-commandBuffer-parameter",
14023 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
14024 },
14025 {
14026 "vuid": "VUID-vkCmdCopyImage-srcImage-parameter",
14027 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
14028 },
14029 {
14030 "vuid": "VUID-vkCmdCopyImage-srcImageLayout-parameter",
14031 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
14032 },
14033 {
14034 "vuid": "VUID-vkCmdCopyImage-dstImage-parameter",
14035 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
14036 },
14037 {
14038 "vuid": "VUID-vkCmdCopyImage-dstImageLayout-parameter",
14039 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
14040 },
14041 {
14042 "vuid": "VUID-vkCmdCopyImage-pRegions-parameter",
14043 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkImageCopy</code> structures"
14044 },
14045 {
14046 "vuid": "VUID-vkCmdCopyImage-commandBuffer-recording",
14047 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14048 },
14049 {
14050 "vuid": "VUID-vkCmdCopyImage-commandBuffer-cmdpool",
14051 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
14052 },
14053 {
14054 "vuid": "VUID-vkCmdCopyImage-renderpass",
14055 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
14056 },
14057 {
14058 "vuid": "VUID-vkCmdCopyImage-regionCount-arraylength",
14059 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14060 },
14061 {
14062 "vuid": "VUID-vkCmdCopyImage-commonparent",
14063 "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
14064 }
14065 ],
14066 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
14067 {
14068 "vuid": "VUID-vkCmdCopyImage-srcImage-01995",
14069 "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>."
14070 },
14071 {
14072 "vuid": "VUID-vkCmdCopyImage-dstImage-01996",
14073 "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>."
14074 }
14075 ],
14076 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
14077 {
14078 "vuid": "VUID-vkCmdCopyImage-srcImage-00127",
14079 "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"
14080 },
14081 {
14082 "vuid": "VUID-vkCmdCopyImage-dstImage-00132",
14083 "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"
14084 },
14085 {
14086 "vuid": "VUID-vkCmdCopyImage-srcImage-00135",
14087 "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>"
14088 }
14089 ],
14090 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
14091 {
14092 "vuid": "VUID-vkCmdCopyImage-srcImage-01546",
14093 "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"
14094 },
14095 {
14096 "vuid": "VUID-vkCmdCopyImage-dstImage-01547",
14097 "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"
14098 },
14099 {
14100 "vuid": "VUID-vkCmdCopyImage-srcImage-01548",
14101 "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>"
14102 },
14103 {
14104 "vuid": "VUID-vkCmdCopyImage-None-01549",
14105 "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"
14106 },
14107 {
14108 "vuid": "VUID-vkCmdCopyImage-aspectMask-01550",
14109 "text": " When a copy is performed to or from an image with a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, the <code>aspectMask</code> of the <code>srcSubresource</code> and/or <code>dstSubresource</code> that refers to the multi-planar image <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for a <a href=\"#VkFormat\">VkFormat</a> with three planes)"
14110 }
14111 ],
14112 "!(VK_KHR_shared_presentable_image)": [
14113 {
14114 "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00129",
14115 "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>"
14116 },
14117 {
14118 "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00134",
14119 "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>"
14120 }
14121 ],
14122 "(VK_KHR_shared_presentable_image)": [
14123 {
14124 "vuid": "VUID-vkCmdCopyImage-srcImageLayout-01917",
14125 "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>"
14126 },
14127 {
14128 "vuid": "VUID-vkCmdCopyImage-dstImageLayout-01395",
14129 "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>"
14130 }
14131 ],
14132 "(VK_VERSION_1_1)": [
14133 {
14134 "vuid": "VUID-vkCmdCopyImage-commandBuffer-01825",
14135 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
14136 },
14137 {
14138 "vuid": "VUID-vkCmdCopyImage-commandBuffer-01826",
14139 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
14140 },
14141 {
14142 "vuid": "VUID-vkCmdCopyImage-commandBuffer-01827",
14143 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
14144 }
14145 ],
14146 "(VK_EXT_fragment_density_map)": [
14147 {
14148 "vuid": "VUID-vkCmdCopyImage-dstImage-02542",
14149 "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>"
14150 }
14151 ]
14152 },
14153 "VkImageCopy": {
14154 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
14155 {
14156 "vuid": "VUID-VkImageCopy-aspectMask-00137",
14157 "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
14158 },
14159 {
14160 "vuid": "VUID-VkImageCopy-srcOffset-00157",
14161 "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, all members of <code>srcOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
14162 },
14163 {
14164 "vuid": "VUID-VkImageCopy-extent-00158",
14165 "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> &#43; <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource width"
14166 },
14167 {
14168 "vuid": "VUID-VkImageCopy-extent-00159",
14169 "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> &#43; <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource height"
14170 },
14171 {
14172 "vuid": "VUID-VkImageCopy-extent-00160",
14173 "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> &#43; <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource depth"
14174 },
14175 {
14176 "vuid": "VUID-VkImageCopy-dstOffset-00162",
14177 "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, all members of <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
14178 },
14179 {
14180 "vuid": "VUID-VkImageCopy-extent-00163",
14181 "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> &#43; <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource width"
14182 },
14183 {
14184 "vuid": "VUID-VkImageCopy-extent-00164",
14185 "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> &#43; <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource height"
14186 },
14187 {
14188 "vuid": "VUID-VkImageCopy-extent-00165",
14189 "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> &#43; <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource depth"
14190 }
14191 ],
14192 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
14193 {
14194 "vuid": "VUID-VkImageCopy-srcImage-01551",
14195 "text": " If neither the calling command&#8217;s <code>srcImage</code> nor the calling command&#8217;s <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> then the <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
14196 },
14197 {
14198 "vuid": "VUID-VkImageCopy-srcImage-01552",
14199 "text": " If the calling command&#8217;s <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then the <code>srcSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>"
14200 },
14201 {
14202 "vuid": "VUID-VkImageCopy-srcImage-01553",
14203 "text": " If the calling command&#8217;s <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then the <code>srcSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
14204 },
14205 {
14206 "vuid": "VUID-VkImageCopy-dstImage-01554",
14207 "text": " If the calling command&#8217;s <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then the <code>dstSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>"
14208 },
14209 {
14210 "vuid": "VUID-VkImageCopy-dstImage-01555",
14211 "text": " If the calling command&#8217;s <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then the <code>dstSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
14212 },
14213 {
14214 "vuid": "VUID-VkImageCopy-srcImage-01556",
14215 "text": " If the calling command&#8217;s <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>dstImage</code> does not have a multi-planar image format, the <code>dstSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
14216 },
14217 {
14218 "vuid": "VUID-VkImageCopy-dstImage-01557",
14219 "text": " If the calling command&#8217;s <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>srcImage</code> does not have a multi-planar image format, the <code>srcSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
14220 },
14221 {
14222 "vuid": "VUID-VkImageCopy-srcImage-01727",
14223 "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, all members of <code>srcOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
14224 },
14225 {
14226 "vuid": "VUID-VkImageCopy-srcImage-01728",
14227 "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> &#43; <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource width"
14228 },
14229 {
14230 "vuid": "VUID-VkImageCopy-srcImage-01729",
14231 "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> &#43; <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource height"
14232 },
14233 {
14234 "vuid": "VUID-VkImageCopy-srcImage-01730",
14235 "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> &#43; <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource depth"
14236 },
14237 {
14238 "vuid": "VUID-VkImageCopy-dstImage-01731",
14239 "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, all members of <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
14240 },
14241 {
14242 "vuid": "VUID-VkImageCopy-dstImage-01732",
14243 "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> &#43; <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource width"
14244 },
14245 {
14246 "vuid": "VUID-VkImageCopy-dstImage-01733",
14247 "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> &#43; <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource height"
14248 },
14249 {
14250 "vuid": "VUID-VkImageCopy-dstImage-01734",
14251 "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> &#43; <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource depth"
14252 }
14253 ],
14254 "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
14255 {
14256 "vuid": "VUID-VkImageCopy-layerCount-00138",
14257 "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
14258 },
14259 {
14260 "vuid": "VUID-VkImageCopy-srcImage-00139",
14261 "text": " If either of the calling command&#8217;s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of both <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
14262 },
14263 {
14264 "vuid": "VUID-VkImageCopy-srcImage-01789",
14265 "text": " If the calling command&#8217;s <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
14266 }
14267 ],
14268 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
14269 {
14270 "vuid": "VUID-VkImageCopy-extent-00140",
14271 "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)"
14272 },
14273 {
14274 "vuid": "VUID-VkImageCopy-srcImage-00141",
14275 "text": " If either of the calling command&#8217;s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of the corresponding subresource <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
14276 },
14277 {
14278 "vuid": "VUID-VkImageCopy-srcImage-01790",
14279 "text": " If both <code>srcImage</code> and <code>dstImage</code> are of type <code>VK_IMAGE_TYPE_2D</code> then <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
14280 },
14281 {
14282 "vuid": "VUID-VkImageCopy-srcImage-01791",
14283 "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and the <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then <code>extent.depth</code> <strong class=\"purple\">must</strong> equal to the <code>layerCount</code> member of <code>srcSubresource</code>."
14284 },
14285 {
14286 "vuid": "VUID-VkImageCopy-dstImage-01792",
14287 "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and the <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then <code>extent.depth</code> <strong class=\"purple\">must</strong> equal to the <code>layerCount</code> member of <code>dstSubresource</code>."
14288 }
14289 ],
14290 "core": [
14291 {
14292 "vuid": "VUID-VkImageCopy-aspectMask-00142",
14293 "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command&#8217;s <code>srcImage</code>"
14294 },
14295 {
14296 "vuid": "VUID-VkImageCopy-aspectMask-00143",
14297 "text": " The <code>aspectMask</code> member of <code>dstSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command&#8217;s <code>dstImage</code>"
14298 },
14299 {
14300 "vuid": "VUID-VkImageCopy-srcOffset-00144",
14301 "text": " <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> &#43; <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource width"
14302 },
14303 {
14304 "vuid": "VUID-VkImageCopy-srcOffset-00145",
14305 "text": " <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> &#43; <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource height"
14306 },
14307 {
14308 "vuid": "VUID-VkImageCopy-srcImage-00146",
14309 "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
14310 },
14311 {
14312 "vuid": "VUID-VkImageCopy-srcOffset-00147",
14313 "text": " <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> &#43; <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource depth"
14314 },
14315 {
14316 "vuid": "VUID-VkImageCopy-srcImage-01785",
14317 "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
14318 },
14319 {
14320 "vuid": "VUID-VkImageCopy-dstImage-01786",
14321 "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
14322 },
14323 {
14324 "vuid": "VUID-VkImageCopy-srcImage-01787",
14325 "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>."
14326 },
14327 {
14328 "vuid": "VUID-VkImageCopy-dstImage-01788",
14329 "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>."
14330 },
14331 {
14332 "vuid": "VUID-VkImageCopy-dstOffset-00150",
14333 "text": " <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> &#43; <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource width"
14334 },
14335 {
14336 "vuid": "VUID-VkImageCopy-dstOffset-00151",
14337 "text": " <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> &#43; <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource height"
14338 },
14339 {
14340 "vuid": "VUID-VkImageCopy-dstImage-00152",
14341 "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
14342 },
14343 {
14344 "vuid": "VUID-VkImageCopy-dstOffset-00153",
14345 "text": " <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> &#43; <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource depth"
14346 },
14347 {
14348 "vuid": "VUID-VkImageCopy-srcSubresource-parameter",
14349 "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
14350 },
14351 {
14352 "vuid": "VUID-VkImageCopy-dstSubresource-parameter",
14353 "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
14354 }
14355 ]
14356 },
14357 "VkImageSubresourceLayers": {
14358 "core": [
14359 {
14360 "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00167",
14361 "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>"
14362 },
14363 {
14364 "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00168",
14365 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
14366 },
14367 {
14368 "vuid": "VUID-VkImageSubresourceLayers-layerCount-01700",
14369 "text": " <code>layerCount</code> <strong class=\"purple\">must</strong> be greater than 0"
14370 },
14371 {
14372 "vuid": "VUID-VkImageSubresourceLayers-aspectMask-parameter",
14373 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
14374 },
14375 {
14376 "vuid": "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask",
14377 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
14378 }
14379 ],
14380 "(VK_EXT_image_drm_format_modifier)": [
14381 {
14382 "vuid": "VUID-VkImageSubresourceLayers-aspectMask-02247",
14383 "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>."
14384 }
14385 ]
14386 },
14387 "vkCmdCopyBufferToImage": {
14388 "core": [
14389 {
14390 "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171",
14391 "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>"
14392 },
14393 {
14394 "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00172",
14395 "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>"
14396 },
14397 {
14398 "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00173",
14399 "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"
14400 },
14401 {
14402 "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00174",
14403 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag"
14404 },
14405 {
14406 "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00176",
14407 "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"
14408 },
14409 {
14410 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00177",
14411 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
14412 },
14413 {
14414 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00178",
14415 "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"
14416 },
14417 {
14418 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00179",
14419 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
14420 },
14421 {
14422 "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00180",
14423 "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>"
14424 },
14425 {
14426 "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01701",
14427 "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"
14428 },
14429 {
14430 "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01702",
14431 "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"
14432 },
14433 {
14434 "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-01793",
14435 "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>"
14436 },
14437 {
14438 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-parameter",
14439 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
14440 },
14441 {
14442 "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-parameter",
14443 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
14444 },
14445 {
14446 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-parameter",
14447 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
14448 },
14449 {
14450 "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter",
14451 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
14452 },
14453 {
14454 "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-parameter",
14455 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkBufferImageCopy</code> structures"
14456 },
14457 {
14458 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-recording",
14459 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14460 },
14461 {
14462 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-cmdpool",
14463 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
14464 },
14465 {
14466 "vuid": "VUID-vkCmdCopyBufferToImage-renderpass",
14467 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
14468 },
14469 {
14470 "vuid": "VUID-vkCmdCopyBufferToImage-regionCount-arraylength",
14471 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14472 },
14473 {
14474 "vuid": "VUID-vkCmdCopyBufferToImage-commonparent",
14475 "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
14476 }
14477 ],
14478 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
14479 {
14480 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-01997",
14481 "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>."
14482 }
14483 ],
14484 "!(VK_KHR_shared_presentable_image)": [
14485 {
14486 "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00181",
14487 "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>"
14488 }
14489 ],
14490 "(VK_KHR_shared_presentable_image)": [
14491 {
14492 "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-01396",
14493 "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>"
14494 }
14495 ],
14496 "(VK_VERSION_1_1)": [
14497 {
14498 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01828",
14499 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
14500 },
14501 {
14502 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01829",
14503 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
14504 },
14505 {
14506 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01830",
14507 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
14508 }
14509 ],
14510 "(VK_EXT_fragment_density_map)": [
14511 {
14512 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-02543",
14513 "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>"
14514 }
14515 ]
14516 },
14517 "vkCmdCopyImageToBuffer": {
14518 "core": [
14519 {
14520 "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00182",
14521 "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>"
14522 },
14523 {
14524 "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183",
14525 "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>"
14526 },
14527 {
14528 "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00184",
14529 "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"
14530 },
14531 {
14532 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00186",
14533 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
14534 },
14535 {
14536 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00187",
14537 "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"
14538 },
14539 {
14540 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00188",
14541 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
14542 },
14543 {
14544 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189",
14545 "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>"
14546 },
14547 {
14548 "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00191",
14549 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
14550 },
14551 {
14552 "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00192",
14553 "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"
14554 },
14555 {
14556 "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01703",
14557 "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"
14558 },
14559 {
14560 "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01704",
14561 "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"
14562 },
14563 {
14564 "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-01794",
14565 "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>"
14566 },
14567 {
14568 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter",
14569 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
14570 },
14571 {
14572 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-parameter",
14573 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
14574 },
14575 {
14576 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter",
14577 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
14578 },
14579 {
14580 "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter",
14581 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
14582 },
14583 {
14584 "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-parameter",
14585 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkBufferImageCopy</code> structures"
14586 },
14587 {
14588 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-recording",
14589 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14590 },
14591 {
14592 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-cmdpool",
14593 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
14594 },
14595 {
14596 "vuid": "VUID-vkCmdCopyImageToBuffer-renderpass",
14597 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
14598 },
14599 {
14600 "vuid": "VUID-vkCmdCopyImageToBuffer-regionCount-arraylength",
14601 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14602 },
14603 {
14604 "vuid": "VUID-vkCmdCopyImageToBuffer-commonparent",
14605 "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
14606 }
14607 ],
14608 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
14609 {
14610 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-01998",
14611 "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>."
14612 }
14613 ],
14614 "!(VK_KHR_shared_presentable_image)": [
14615 {
14616 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00190",
14617 "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>"
14618 }
14619 ],
14620 "(VK_KHR_shared_presentable_image)": [
14621 {
14622 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397",
14623 "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>"
14624 }
14625 ],
14626 "(VK_VERSION_1_1)": [
14627 {
14628 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01831",
14629 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
14630 },
14631 {
14632 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01832",
14633 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
14634 },
14635 {
14636 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01833",
14637 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
14638 }
14639 ],
14640 "(VK_EXT_fragment_density_map)": [
14641 {
14642 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-02544",
14643 "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>"
14644 }
14645 ]
14646 },
14647 "VkBufferImageCopy": {
14648 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
14649 {
14650 "vuid": "VUID-VkBufferImageCopy-bufferOffset-00193",
14651 "text": " If the calling command&#8217;s <code>VkImage</code> parameter&#8217;s format is not a depth/stencil format, then <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format&#8217;s texel block size."
14652 },
14653 {
14654 "vuid": "VUID-VkBufferImageCopy-bufferRowLength-00203",
14655 "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width"
14656 },
14657 {
14658 "vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00204",
14659 "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height"
14660 },
14661 {
14662 "vuid": "VUID-VkBufferImageCopy-imageOffset-00205",
14663 "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
14664 },
14665 {
14666 "vuid": "VUID-VkBufferImageCopy-bufferOffset-00206",
14667 "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes"
14668 },
14669 {
14670 "vuid": "VUID-VkBufferImageCopy-imageExtent-00207",
14671 "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>imageExtent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>imageExtent.width</code> &#43; <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource width"
14672 },
14673 {
14674 "vuid": "VUID-VkBufferImageCopy-imageExtent-00208",
14675 "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>imageExtent.height</code> &#43; <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource height"
14676 },
14677 {
14678 "vuid": "VUID-VkBufferImageCopy-imageExtent-00209",
14679 "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>imageExtent.depth</code> &#43; <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource depth"
14680 }
14681 ],
14682 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
14683 {
14684 "vuid": "VUID-VkBufferImageCopy-bufferOffset-01558",
14685 "text": " If the calling command&#8217;s <code>VkImage</code> parameter&#8217;s format is not a depth/stencil format or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format&#8217;s texel block size."
14686 },
14687 {
14688 "vuid": "VUID-VkBufferImageCopy-bufferOffset-01559",
14689 "text": " If the calling command&#8217;s <code>VkImage</code> parameter&#8217;s format is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>"
14690 },
14691 {
14692 "vuid": "VUID-VkBufferImageCopy-None-01735",
14693 "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width"
14694 },
14695 {
14696 "vuid": "VUID-VkBufferImageCopy-None-01736",
14697 "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height"
14698 },
14699 {
14700 "vuid": "VUID-VkBufferImageCopy-None-01737",
14701 "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
14702 },
14703 {
14704 "vuid": "VUID-VkBufferImageCopy-None-01738",
14705 "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes"
14706 },
14707 {
14708 "vuid": "VUID-VkBufferImageCopy-None-01739",
14709 "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>imageExtent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>imageExtent.width</code> &#43; <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource width"
14710 },
14711 {
14712 "vuid": "VUID-VkBufferImageCopy-None-01740",
14713 "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>imageExtent.height</code> &#43; <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource height"
14714 },
14715 {
14716 "vuid": "VUID-VkBufferImageCopy-None-01741",
14717 "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>imageExtent.depth</code> &#43; <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource depth"
14718 },
14719 {
14720 "vuid": "VUID-VkBufferImageCopy-aspectMask-01560",
14721 "text": " If the calling command&#8217;s <code>VkImage</code> parameter&#8217;s format is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then the <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for image formats with three planes)"
14722 }
14723 ],
14724 "core": [
14725 {
14726 "vuid": "VUID-VkBufferImageCopy-bufferOffset-00194",
14727 "text": " <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
14728 },
14729 {
14730 "vuid": "VUID-VkBufferImageCopy-bufferRowLength-00195",
14731 "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>"
14732 },
14733 {
14734 "vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00196",
14735 "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>"
14736 },
14737 {
14738 "vuid": "VUID-VkBufferImageCopy-imageOffset-00197",
14739 "text": " <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> &#43; <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the image subresource width"
14740 },
14741 {
14742 "vuid": "VUID-VkBufferImageCopy-imageOffset-00198",
14743 "text": " <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height &#43; <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the image subresource height"
14744 },
14745 {
14746 "vuid": "VUID-VkBufferImageCopy-srcImage-00199",
14747 "text": " If the calling command&#8217;s <code>srcImage</code> (<a href=\"#vkCmdCopyImageToBuffer\">vkCmdCopyImageToBuffer</a>) or <code>dstImage</code> (<a href=\"#vkCmdCopyBufferToImage\">vkCmdCopyBufferToImage</a>) is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
14748 },
14749 {
14750 "vuid": "VUID-VkBufferImageCopy-imageOffset-00200",
14751 "text": " <code>imageOffset.z</code> and <span class=\"eq\">(imageExtent.depth &#43; <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the image subresource depth"
14752 },
14753 {
14754 "vuid": "VUID-VkBufferImageCopy-srcImage-00201",
14755 "text": " If the calling command&#8217;s <code>srcImage</code> (<a href=\"#vkCmdCopyImageToBuffer\">vkCmdCopyImageToBuffer</a>) or <code>dstImage</code> (<a href=\"#vkCmdCopyBufferToImage\">vkCmdCopyBufferToImage</a>) is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
14756 },
14757 {
14758 "vuid": "VUID-VkBufferImageCopy-aspectMask-00211",
14759 "text": " The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command&#8217;s <code>VkImage</code> parameter"
14760 },
14761 {
14762 "vuid": "VUID-VkBufferImageCopy-aspectMask-00212",
14763 "text": " The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set"
14764 },
14765 {
14766 "vuid": "VUID-VkBufferImageCopy-baseArrayLayer-00213",
14767 "text": " If the calling command&#8217;s <code>VkImage</code> parameter is of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of <code>imageSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
14768 },
14769 {
14770 "vuid": "VUID-VkBufferImageCopy-imageSubresource-parameter",
14771 "text": " <code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
14772 }
14773 ],
14774 "!(VK_EXT_depth_range_unrestricted)": [
14775 {
14776 "vuid": "VUID-VkBufferImageCopy-None-00214",
14777 "text": " When copying to the depth aspect of an image subresource, the data in the source buffer <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>"
14778 }
14779 ]
14780 },
14781 "vkCmdBlitImage": {
14782 "core": [
14783 {
14784 "vuid": "VUID-vkCmdBlitImage-pRegions-00215",
14785 "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>"
14786 },
14787 {
14788 "vuid": "VUID-vkCmdBlitImage-pRegions-00216",
14789 "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>"
14790 },
14791 {
14792 "vuid": "VUID-vkCmdBlitImage-pRegions-00217",
14793 "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"
14794 },
14795 {
14796 "vuid": "VUID-vkCmdBlitImage-srcImage-01999",
14797 "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>."
14798 },
14799 {
14800 "vuid": "VUID-vkCmdBlitImage-srcImage-00219",
14801 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
14802 },
14803 {
14804 "vuid": "VUID-vkCmdBlitImage-srcImage-00220",
14805 "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"
14806 },
14807 {
14808 "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00221",
14809 "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>"
14810 },
14811 {
14812 "vuid": "VUID-vkCmdBlitImage-dstImage-02000",
14813 "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>."
14814 },
14815 {
14816 "vuid": "VUID-vkCmdBlitImage-dstImage-00224",
14817 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
14818 },
14819 {
14820 "vuid": "VUID-vkCmdBlitImage-dstImage-00225",
14821 "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"
14822 },
14823 {
14824 "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00226",
14825 "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>"
14826 },
14827 {
14828 "vuid": "VUID-vkCmdBlitImage-srcImage-00228",
14829 "text": " The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> both be equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
14830 },
14831 {
14832 "vuid": "VUID-vkCmdBlitImage-srcImage-00229",
14833 "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>"
14834 },
14835 {
14836 "vuid": "VUID-vkCmdBlitImage-srcImage-00230",
14837 "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>"
14838 },
14839 {
14840 "vuid": "VUID-vkCmdBlitImage-srcImage-00231",
14841 "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"
14842 },
14843 {
14844 "vuid": "VUID-vkCmdBlitImage-srcImage-00232",
14845 "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>"
14846 },
14847 {
14848 "vuid": "VUID-vkCmdBlitImage-srcImage-00233",
14849 "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>"
14850 },
14851 {
14852 "vuid": "VUID-vkCmdBlitImage-dstImage-00234",
14853 "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>"
14854 },
14855 {
14856 "vuid": "VUID-vkCmdBlitImage-filter-02001",
14857 "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>."
14858 },
14859 {
14860 "vuid": "VUID-vkCmdBlitImage-srcSubresource-01705",
14861 "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"
14862 },
14863 {
14864 "vuid": "VUID-vkCmdBlitImage-dstSubresource-01706",
14865 "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"
14866 },
14867 {
14868 "vuid": "VUID-vkCmdBlitImage-srcSubresource-01707",
14869 "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"
14870 },
14871 {
14872 "vuid": "VUID-vkCmdBlitImage-dstSubresource-01708",
14873 "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"
14874 },
14875 {
14876 "vuid": "VUID-vkCmdBlitImage-commandBuffer-parameter",
14877 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
14878 },
14879 {
14880 "vuid": "VUID-vkCmdBlitImage-srcImage-parameter",
14881 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
14882 },
14883 {
14884 "vuid": "VUID-vkCmdBlitImage-srcImageLayout-parameter",
14885 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
14886 },
14887 {
14888 "vuid": "VUID-vkCmdBlitImage-dstImage-parameter",
14889 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
14890 },
14891 {
14892 "vuid": "VUID-vkCmdBlitImage-dstImageLayout-parameter",
14893 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
14894 },
14895 {
14896 "vuid": "VUID-vkCmdBlitImage-pRegions-parameter",
14897 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkImageBlit</code> structures"
14898 },
14899 {
14900 "vuid": "VUID-vkCmdBlitImage-filter-parameter",
14901 "text": " <code>filter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
14902 },
14903 {
14904 "vuid": "VUID-vkCmdBlitImage-commandBuffer-recording",
14905 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
14906 },
14907 {
14908 "vuid": "VUID-vkCmdBlitImage-commandBuffer-cmdpool",
14909 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
14910 },
14911 {
14912 "vuid": "VUID-vkCmdBlitImage-renderpass",
14913 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
14914 },
14915 {
14916 "vuid": "VUID-vkCmdBlitImage-regionCount-arraylength",
14917 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
14918 },
14919 {
14920 "vuid": "VUID-vkCmdBlitImage-commonparent",
14921 "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
14922 }
14923 ],
14924 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
14925 {
14926 "vuid": "VUID-vkCmdBlitImage-srcImage-01561",
14927 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>"
14928 },
14929 {
14930 "vuid": "VUID-vkCmdBlitImage-dstImage-01562",
14931 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>"
14932 }
14933 ],
14934 "!(VK_KHR_shared_presentable_image)": [
14935 {
14936 "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00222",
14937 "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>"
14938 },
14939 {
14940 "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00227",
14941 "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>"
14942 }
14943 ],
14944 "(VK_KHR_shared_presentable_image)": [
14945 {
14946 "vuid": "VUID-vkCmdBlitImage-srcImageLayout-01398",
14947 "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>"
14948 },
14949 {
14950 "vuid": "VUID-vkCmdBlitImage-dstImageLayout-01399",
14951 "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>"
14952 }
14953 ],
14954 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
14955 {
14956 "vuid": "VUID-vkCmdBlitImage-filter-02002",
14957 "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>."
14958 },
14959 {
14960 "vuid": "VUID-vkCmdBlitImage-filter-00237",
14961 "text": " If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code>, <code>srcImage</code> <strong class=\"purple\">must</strong> have a <a href=\"#VkImageType\">VkImageType</a> of <code>VK_IMAGE_TYPE_2D</code>"
14962 }
14963 ],
14964 "(VK_VERSION_1_1)": [
14965 {
14966 "vuid": "VUID-vkCmdBlitImage-commandBuffer-01834",
14967 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
14968 },
14969 {
14970 "vuid": "VUID-vkCmdBlitImage-commandBuffer-01835",
14971 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
14972 },
14973 {
14974 "vuid": "VUID-vkCmdBlitImage-commandBuffer-01836",
14975 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
14976 }
14977 ],
14978 "(VK_EXT_fragment_density_map)": [
14979 {
14980 "vuid": "VUID-vkCmdBlitImage-dstImage-02545",
14981 "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>"
14982 }
14983 ]
14984 },
14985 "VkImageBlit": {
14986 "core": [
14987 {
14988 "vuid": "VUID-VkImageBlit-aspectMask-00238",
14989 "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
14990 },
14991 {
14992 "vuid": "VUID-VkImageBlit-layerCount-00239",
14993 "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
14994 },
14995 {
14996 "vuid": "VUID-VkImageBlit-srcImage-00240",
14997 "text": " If either of the calling command&#8217;s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of both <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
14998 },
14999 {
15000 "vuid": "VUID-VkImageBlit-aspectMask-00241",
15001 "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command&#8217;s <code>srcImage</code>"
15002 },
15003 {
15004 "vuid": "VUID-VkImageBlit-aspectMask-00242",
15005 "text": " The <code>aspectMask</code> member of <code>dstSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command&#8217;s <code>dstImage</code>"
15006 },
15007 {
15008 "vuid": "VUID-VkImageBlit-srcOffset-00243",
15009 "text": " <code>srcOffset</code>[0].<code>x</code> and <code>srcOffset</code>[1].<code>x</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource width"
15010 },
15011 {
15012 "vuid": "VUID-VkImageBlit-srcOffset-00244",
15013 "text": " <code>srcOffset</code>[0].<code>y</code> and <code>srcOffset</code>[1].<code>y</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource height"
15014 },
15015 {
15016 "vuid": "VUID-VkImageBlit-srcImage-00245",
15017 "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffset</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>."
15018 },
15019 {
15020 "vuid": "VUID-VkImageBlit-srcOffset-00246",
15021 "text": " <code>srcOffset</code>[0].<code>z</code> and <code>srcOffset</code>[1].<code>z</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource depth"
15022 },
15023 {
15024 "vuid": "VUID-VkImageBlit-srcImage-00247",
15025 "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>srcOffset</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffset</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>."
15026 },
15027 {
15028 "vuid": "VUID-VkImageBlit-dstOffset-00248",
15029 "text": " <code>dstOffset</code>[0].<code>x</code> and <code>dstOffset</code>[1].<code>x</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource width"
15030 },
15031 {
15032 "vuid": "VUID-VkImageBlit-dstOffset-00249",
15033 "text": " <code>dstOffset</code>[0].<code>y</code> and <code>dstOffset</code>[1].<code>y</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource height"
15034 },
15035 {
15036 "vuid": "VUID-VkImageBlit-dstImage-00250",
15037 "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffset</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>."
15038 },
15039 {
15040 "vuid": "VUID-VkImageBlit-dstOffset-00251",
15041 "text": " <code>dstOffset</code>[0].<code>z</code> and <code>dstOffset</code>[1].<code>z</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource depth"
15042 },
15043 {
15044 "vuid": "VUID-VkImageBlit-dstImage-00252",
15045 "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>dstOffset</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffset</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>."
15046 },
15047 {
15048 "vuid": "VUID-VkImageBlit-srcSubresource-parameter",
15049 "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
15050 },
15051 {
15052 "vuid": "VUID-VkImageBlit-dstSubresource-parameter",
15053 "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
15054 }
15055 ]
15056 },
15057 "vkCmdResolveImage": {
15058 "core": [
15059 {
15060 "vuid": "VUID-vkCmdResolveImage-pRegions-00253",
15061 "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>"
15062 },
15063 {
15064 "vuid": "VUID-vkCmdResolveImage-pRegions-00254",
15065 "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>"
15066 },
15067 {
15068 "vuid": "VUID-vkCmdResolveImage-pRegions-00255",
15069 "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"
15070 },
15071 {
15072 "vuid": "VUID-vkCmdResolveImage-srcImage-00256",
15073 "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"
15074 },
15075 {
15076 "vuid": "VUID-vkCmdResolveImage-srcImage-00257",
15077 "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>"
15078 },
15079 {
15080 "vuid": "VUID-vkCmdResolveImage-dstImage-00258",
15081 "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"
15082 },
15083 {
15084 "vuid": "VUID-vkCmdResolveImage-dstImage-00259",
15085 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
15086 },
15087 {
15088 "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00260",
15089 "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>"
15090 },
15091 {
15092 "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00262",
15093 "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>"
15094 },
15095 {
15096 "vuid": "VUID-vkCmdResolveImage-dstImage-02003",
15097 "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>."
15098 },
15099 {
15100 "vuid": "VUID-vkCmdResolveImage-srcImage-01386",
15101 "text": " <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with the same image format"
15102 },
15103 {
15104 "vuid": "VUID-vkCmdResolveImage-srcSubresource-01709",
15105 "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"
15106 },
15107 {
15108 "vuid": "VUID-vkCmdResolveImage-dstSubresource-01710",
15109 "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"
15110 },
15111 {
15112 "vuid": "VUID-vkCmdResolveImage-srcSubresource-01711",
15113 "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"
15114 },
15115 {
15116 "vuid": "VUID-vkCmdResolveImage-dstSubresource-01712",
15117 "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"
15118 },
15119 {
15120 "vuid": "VUID-vkCmdResolveImage-commandBuffer-parameter",
15121 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
15122 },
15123 {
15124 "vuid": "VUID-vkCmdResolveImage-srcImage-parameter",
15125 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
15126 },
15127 {
15128 "vuid": "VUID-vkCmdResolveImage-srcImageLayout-parameter",
15129 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
15130 },
15131 {
15132 "vuid": "VUID-vkCmdResolveImage-dstImage-parameter",
15133 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
15134 },
15135 {
15136 "vuid": "VUID-vkCmdResolveImage-dstImageLayout-parameter",
15137 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
15138 },
15139 {
15140 "vuid": "VUID-vkCmdResolveImage-pRegions-parameter",
15141 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkImageResolve</code> structures"
15142 },
15143 {
15144 "vuid": "VUID-vkCmdResolveImage-commandBuffer-recording",
15145 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15146 },
15147 {
15148 "vuid": "VUID-vkCmdResolveImage-commandBuffer-cmdpool",
15149 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
15150 },
15151 {
15152 "vuid": "VUID-vkCmdResolveImage-renderpass",
15153 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
15154 },
15155 {
15156 "vuid": "VUID-vkCmdResolveImage-regionCount-arraylength",
15157 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
15158 },
15159 {
15160 "vuid": "VUID-vkCmdResolveImage-commonparent",
15161 "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
15162 }
15163 ],
15164 "!(VK_KHR_shared_presentable_image)": [
15165 {
15166 "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00261",
15167 "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>"
15168 },
15169 {
15170 "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00263",
15171 "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>"
15172 }
15173 ],
15174 "(VK_KHR_shared_presentable_image)": [
15175 {
15176 "vuid": "VUID-vkCmdResolveImage-srcImageLayout-01400",
15177 "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>"
15178 },
15179 {
15180 "vuid": "VUID-vkCmdResolveImage-dstImageLayout-01401",
15181 "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>"
15182 }
15183 ],
15184 "(VK_VERSION_1_1)": [
15185 {
15186 "vuid": "VUID-vkCmdResolveImage-commandBuffer-01837",
15187 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
15188 },
15189 {
15190 "vuid": "VUID-vkCmdResolveImage-commandBuffer-01838",
15191 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
15192 },
15193 {
15194 "vuid": "VUID-vkCmdResolveImage-commandBuffer-01839",
15195 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
15196 }
15197 ],
15198 "(VK_EXT_fragment_density_map)": [
15199 {
15200 "vuid": "VUID-vkCmdResolveImage-dstImage-02546",
15201 "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>"
15202 }
15203 ]
15204 },
15205 "VkImageResolve": {
15206 "core": [
15207 {
15208 "vuid": "VUID-VkImageResolve-aspectMask-00266",
15209 "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>"
15210 },
15211 {
15212 "vuid": "VUID-VkImageResolve-layerCount-00267",
15213 "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
15214 },
15215 {
15216 "vuid": "VUID-VkImageResolve-srcImage-00268",
15217 "text": " If either of the calling command&#8217;s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of both <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
15218 },
15219 {
15220 "vuid": "VUID-VkImageResolve-srcOffset-00269",
15221 "text": " <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> &#43; <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource width"
15222 },
15223 {
15224 "vuid": "VUID-VkImageResolve-srcOffset-00270",
15225 "text": " <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> &#43; <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource height"
15226 },
15227 {
15228 "vuid": "VUID-VkImageResolve-srcImage-00271",
15229 "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
15230 },
15231 {
15232 "vuid": "VUID-VkImageResolve-srcOffset-00272",
15233 "text": " <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> &#43; <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource depth"
15234 },
15235 {
15236 "vuid": "VUID-VkImageResolve-srcImage-00273",
15237 "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
15238 },
15239 {
15240 "vuid": "VUID-VkImageResolve-dstOffset-00274",
15241 "text": " <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> &#43; <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource width"
15242 },
15243 {
15244 "vuid": "VUID-VkImageResolve-dstOffset-00275",
15245 "text": " <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> &#43; <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource height"
15246 },
15247 {
15248 "vuid": "VUID-VkImageResolve-dstImage-00276",
15249 "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
15250 },
15251 {
15252 "vuid": "VUID-VkImageResolve-dstOffset-00277",
15253 "text": " <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> &#43; <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource depth"
15254 },
15255 {
15256 "vuid": "VUID-VkImageResolve-dstImage-00278",
15257 "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
15258 },
15259 {
15260 "vuid": "VUID-VkImageResolve-srcSubresource-parameter",
15261 "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
15262 },
15263 {
15264 "vuid": "VUID-VkImageResolve-dstSubresource-parameter",
15265 "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
15266 }
15267 ]
15268 },
15269 "vkCmdWriteBufferMarkerAMD": {
15270 "(VK_AMD_buffer_marker)": [
15271 {
15272 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798",
15273 "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>."
15274 },
15275 {
15276 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01799",
15277 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
15278 },
15279 {
15280 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01800",
15281 "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"
15282 },
15283 {
15284 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01801",
15285 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
15286 },
15287 {
15288 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter",
15289 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
15290 },
15291 {
15292 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-parameter",
15293 "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value"
15294 },
15295 {
15296 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-parameter",
15297 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
15298 },
15299 {
15300 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-recording",
15301 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15302 },
15303 {
15304 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-cmdpool",
15305 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
15306 },
15307 {
15308 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commonparent",
15309 "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
15310 }
15311 ]
15312 },
15313 "VkPipelineInputAssemblyStateCreateInfo": {
15314 "core": [
15315 {
15316 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00428",
15317 "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>"
15318 },
15319 {
15320 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429",
15321 "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>"
15322 },
15323 {
15324 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430",
15325 "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>"
15326 },
15327 {
15328 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType",
15329 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO</code>"
15330 },
15331 {
15332 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext",
15333 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
15334 },
15335 {
15336 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask",
15337 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
15338 },
15339 {
15340 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter",
15341 "text": " <code>topology</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrimitiveTopology\">VkPrimitiveTopology</a> value"
15342 }
15343 ]
15344 },
15345 "vkCmdBindIndexBuffer": {
15346 "core": [
15347 {
15348 "vuid": "VUID-vkCmdBindIndexBuffer-offset-00431",
15349 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
15350 },
15351 {
15352 "vuid": "VUID-vkCmdBindIndexBuffer-offset-00432",
15353 "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>"
15354 },
15355 {
15356 "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00433",
15357 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDEX_BUFFER_BIT</code> flag"
15358 },
15359 {
15360 "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00434",
15361 "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"
15362 },
15363 {
15364 "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-parameter",
15365 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
15366 },
15367 {
15368 "vuid": "VUID-vkCmdBindIndexBuffer-buffer-parameter",
15369 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
15370 },
15371 {
15372 "vuid": "VUID-vkCmdBindIndexBuffer-indexType-parameter",
15373 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
15374 },
15375 {
15376 "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-recording",
15377 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15378 },
15379 {
15380 "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-cmdpool",
15381 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
15382 },
15383 {
15384 "vuid": "VUID-vkCmdBindIndexBuffer-commonparent",
15385 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
15386 }
15387 ],
15388 "(VK_NV_ray_tracing)": [
15389 {
15390 "vuid": "VUID-vkCmdBindIndexBuffer-indexType-02507",
15391 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> not be <code>VK_INDEX_TYPE_NONE_NV</code>."
15392 }
15393 ],
15394 "(VK_EXT_index_type_uint8)": [
15395 {
15396 "vuid": "VUID-vkCmdBindIndexBuffer-indexType-02765",
15397 "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"
15398 }
15399 ]
15400 },
15401 "vkCmdDraw": {
15402 "core": [
15403 {
15404 "vuid": "VUID-vkCmdDraw-None-02690",
15405 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
15406 },
15407 {
15408 "vuid": "VUID-vkCmdDraw-None-02691",
15409 "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>"
15410 },
15411 {
15412 "vuid": "VUID-vkCmdDraw-None-02697",
15413 "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>"
15414 },
15415 {
15416 "vuid": "VUID-vkCmdDraw-None-02698",
15417 "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>"
15418 },
15419 {
15420 "vuid": "VUID-vkCmdDraw-None-02699",
15421 "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"
15422 },
15423 {
15424 "vuid": "VUID-vkCmdDraw-None-02700",
15425 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
15426 },
15427 {
15428 "vuid": "VUID-vkCmdDraw-commandBuffer-02701",
15429 "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>"
15430 },
15431 {
15432 "vuid": "VUID-vkCmdDraw-None-02702",
15433 "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"
15434 },
15435 {
15436 "vuid": "VUID-vkCmdDraw-None-02703",
15437 "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"
15438 },
15439 {
15440 "vuid": "VUID-vkCmdDraw-None-02704",
15441 "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"
15442 },
15443 {
15444 "vuid": "VUID-vkCmdDraw-None-02705",
15445 "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"
15446 },
15447 {
15448 "vuid": "VUID-vkCmdDraw-None-02706",
15449 "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"
15450 },
15451 {
15452 "vuid": "VUID-vkCmdDraw-renderPass-02684",
15453 "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>."
15454 },
15455 {
15456 "vuid": "VUID-vkCmdDraw-subpass-02685",
15457 "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>."
15458 },
15459 {
15460 "vuid": "VUID-vkCmdDraw-None-02686",
15461 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
15462 },
15463 {
15464 "vuid": "VUID-vkCmdDraw-None-02687",
15465 "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."
15466 },
15467 {
15468 "vuid": "VUID-vkCmdDraw-None-02720",
15469 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
15470 },
15471 {
15472 "vuid": "VUID-vkCmdDraw-None-02721",
15473 "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>"
15474 },
15475 {
15476 "vuid": "VUID-vkCmdDraw-commandBuffer-parameter",
15477 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
15478 },
15479 {
15480 "vuid": "VUID-vkCmdDraw-commandBuffer-recording",
15481 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15482 },
15483 {
15484 "vuid": "VUID-vkCmdDraw-commandBuffer-cmdpool",
15485 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
15486 },
15487 {
15488 "vuid": "VUID-vkCmdDraw-renderpass",
15489 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
15490 }
15491 ],
15492 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
15493 {
15494 "vuid": "VUID-vkCmdDraw-None-02692",
15495 "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>"
15496 }
15497 ],
15498 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
15499 {
15500 "vuid": "VUID-vkCmdDraw-None-02693",
15501 "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>"
15502 }
15503 ],
15504 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
15505 {
15506 "vuid": "VUID-vkCmdDraw-filterCubic-02694",
15507 "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>"
15508 },
15509 {
15510 "vuid": "VUID-vkCmdDraw-filterCubicMinmax-02695",
15511 "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_EXT</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX_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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
15512 }
15513 ],
15514 "(VK_NV_corner_sampled_image)": [
15515 {
15516 "vuid": "VUID-vkCmdDraw-flags-02696",
15517 "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>."
15518 }
15519 ],
15520 "(VK_VERSION_1_1)": [
15521 {
15522 "vuid": "VUID-vkCmdDraw-commandBuffer-02707",
15523 "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"
15524 },
15525 {
15526 "vuid": "VUID-vkCmdDraw-commandBuffer-02712",
15527 "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"
15528 },
15529 {
15530 "vuid": "VUID-vkCmdDraw-commandBuffer-02713",
15531 "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"
15532 }
15533 ],
15534 "(VK_VERSION_1_1,VK_KHR_multiview)": [
15535 {
15536 "vuid": "VUID-vkCmdDraw-maxMultiviewInstanceIndex-02688",
15537 "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>."
15538 }
15539 ],
15540 "(VK_EXT_sample_locations)": [
15541 {
15542 "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-02689",
15543 "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"
15544 }
15545 ]
15546 },
15547 "vkCmdDrawIndexed": {
15548 "core": [
15549 {
15550 "vuid": "VUID-vkCmdDrawIndexed-None-02690",
15551 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
15552 },
15553 {
15554 "vuid": "VUID-vkCmdDrawIndexed-None-02691",
15555 "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>"
15556 },
15557 {
15558 "vuid": "VUID-vkCmdDrawIndexed-None-02697",
15559 "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>"
15560 },
15561 {
15562 "vuid": "VUID-vkCmdDrawIndexed-None-02698",
15563 "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>"
15564 },
15565 {
15566 "vuid": "VUID-vkCmdDrawIndexed-None-02699",
15567 "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"
15568 },
15569 {
15570 "vuid": "VUID-vkCmdDrawIndexed-None-02700",
15571 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
15572 },
15573 {
15574 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02701",
15575 "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>"
15576 },
15577 {
15578 "vuid": "VUID-vkCmdDrawIndexed-None-02702",
15579 "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"
15580 },
15581 {
15582 "vuid": "VUID-vkCmdDrawIndexed-None-02703",
15583 "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"
15584 },
15585 {
15586 "vuid": "VUID-vkCmdDrawIndexed-None-02704",
15587 "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"
15588 },
15589 {
15590 "vuid": "VUID-vkCmdDrawIndexed-None-02705",
15591 "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"
15592 },
15593 {
15594 "vuid": "VUID-vkCmdDrawIndexed-None-02706",
15595 "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"
15596 },
15597 {
15598 "vuid": "VUID-vkCmdDrawIndexed-renderPass-02684",
15599 "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>."
15600 },
15601 {
15602 "vuid": "VUID-vkCmdDrawIndexed-subpass-02685",
15603 "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>."
15604 },
15605 {
15606 "vuid": "VUID-vkCmdDrawIndexed-None-02686",
15607 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
15608 },
15609 {
15610 "vuid": "VUID-vkCmdDrawIndexed-None-02687",
15611 "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."
15612 },
15613 {
15614 "vuid": "VUID-vkCmdDrawIndexed-None-02720",
15615 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
15616 },
15617 {
15618 "vuid": "VUID-vkCmdDrawIndexed-None-02721",
15619 "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>"
15620 },
15621 {
15622 "vuid": "VUID-vkCmdDrawIndexed-indexSize-00463",
15623 "text": " <span class=\"eq\">(<code>indexSize</code> * (<code>firstIndex</code> &#43; <code>indexCount</code>) &#43; <code>offset</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to the size of the bound index buffer, with <code>indexSize</code> being based on the type specified by <code>indexType</code>, where the index buffer, <code>indexType</code>, and <code>offset</code> are specified via <code>vkCmdBindIndexBuffer</code>"
15624 },
15625 {
15626 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-parameter",
15627 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
15628 },
15629 {
15630 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-recording",
15631 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15632 },
15633 {
15634 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-cmdpool",
15635 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
15636 },
15637 {
15638 "vuid": "VUID-vkCmdDrawIndexed-renderpass",
15639 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
15640 }
15641 ],
15642 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
15643 {
15644 "vuid": "VUID-vkCmdDrawIndexed-None-02692",
15645 "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>"
15646 }
15647 ],
15648 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
15649 {
15650 "vuid": "VUID-vkCmdDrawIndexed-None-02693",
15651 "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>"
15652 }
15653 ],
15654 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
15655 {
15656 "vuid": "VUID-vkCmdDrawIndexed-filterCubic-02694",
15657 "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>"
15658 },
15659 {
15660 "vuid": "VUID-vkCmdDrawIndexed-filterCubicMinmax-02695",
15661 "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_EXT</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX_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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
15662 }
15663 ],
15664 "(VK_NV_corner_sampled_image)": [
15665 {
15666 "vuid": "VUID-vkCmdDrawIndexed-flags-02696",
15667 "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>."
15668 }
15669 ],
15670 "(VK_VERSION_1_1)": [
15671 {
15672 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02707",
15673 "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"
15674 },
15675 {
15676 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02712",
15677 "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"
15678 },
15679 {
15680 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02713",
15681 "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"
15682 }
15683 ],
15684 "(VK_VERSION_1_1,VK_KHR_multiview)": [
15685 {
15686 "vuid": "VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688",
15687 "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>."
15688 }
15689 ],
15690 "(VK_EXT_sample_locations)": [
15691 {
15692 "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-02689",
15693 "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"
15694 }
15695 ]
15696 },
15697 "vkCmdDrawIndirect": {
15698 "core": [
15699 {
15700 "vuid": "VUID-vkCmdDrawIndirect-None-02690",
15701 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
15702 },
15703 {
15704 "vuid": "VUID-vkCmdDrawIndirect-None-02691",
15705 "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>"
15706 },
15707 {
15708 "vuid": "VUID-vkCmdDrawIndirect-None-02697",
15709 "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>"
15710 },
15711 {
15712 "vuid": "VUID-vkCmdDrawIndirect-None-02698",
15713 "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>"
15714 },
15715 {
15716 "vuid": "VUID-vkCmdDrawIndirect-None-02699",
15717 "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"
15718 },
15719 {
15720 "vuid": "VUID-vkCmdDrawIndirect-None-02700",
15721 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
15722 },
15723 {
15724 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02701",
15725 "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>"
15726 },
15727 {
15728 "vuid": "VUID-vkCmdDrawIndirect-None-02702",
15729 "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"
15730 },
15731 {
15732 "vuid": "VUID-vkCmdDrawIndirect-None-02703",
15733 "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"
15734 },
15735 {
15736 "vuid": "VUID-vkCmdDrawIndirect-None-02704",
15737 "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"
15738 },
15739 {
15740 "vuid": "VUID-vkCmdDrawIndirect-None-02705",
15741 "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"
15742 },
15743 {
15744 "vuid": "VUID-vkCmdDrawIndirect-None-02706",
15745 "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"
15746 },
15747 {
15748 "vuid": "VUID-vkCmdDrawIndirect-renderPass-02684",
15749 "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>."
15750 },
15751 {
15752 "vuid": "VUID-vkCmdDrawIndirect-subpass-02685",
15753 "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>."
15754 },
15755 {
15756 "vuid": "VUID-vkCmdDrawIndirect-None-02686",
15757 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
15758 },
15759 {
15760 "vuid": "VUID-vkCmdDrawIndirect-None-02687",
15761 "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."
15762 },
15763 {
15764 "vuid": "VUID-vkCmdDrawIndirect-None-02720",
15765 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
15766 },
15767 {
15768 "vuid": "VUID-vkCmdDrawIndirect-None-02721",
15769 "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>"
15770 },
15771 {
15772 "vuid": "VUID-vkCmdDrawIndirect-buffer-02708",
15773 "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"
15774 },
15775 {
15776 "vuid": "VUID-vkCmdDrawIndirect-buffer-02709",
15777 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
15778 },
15779 {
15780 "vuid": "VUID-vkCmdDrawIndirect-offset-02710",
15781 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
15782 },
15783 {
15784 "vuid": "VUID-vkCmdDrawIndirect-drawCount-02718",
15785 "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>"
15786 },
15787 {
15788 "vuid": "VUID-vkCmdDrawIndirect-drawCount-02719",
15789 "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
15790 },
15791 {
15792 "vuid": "VUID-vkCmdDrawIndirect-firstInstance-00478",
15793 "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>"
15794 },
15795 {
15796 "vuid": "VUID-vkCmdDrawIndirect-drawCount-00476",
15797 "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>)"
15798 },
15799 {
15800 "vuid": "VUID-vkCmdDrawIndirect-drawCount-00487",
15801 "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>"
15802 },
15803 {
15804 "vuid": "VUID-vkCmdDrawIndirect-drawCount-00488",
15805 "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>"
15806 },
15807 {
15808 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-parameter",
15809 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
15810 },
15811 {
15812 "vuid": "VUID-vkCmdDrawIndirect-buffer-parameter",
15813 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
15814 },
15815 {
15816 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-recording",
15817 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
15818 },
15819 {
15820 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-cmdpool",
15821 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
15822 },
15823 {
15824 "vuid": "VUID-vkCmdDrawIndirect-renderpass",
15825 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
15826 },
15827 {
15828 "vuid": "VUID-vkCmdDrawIndirect-commonparent",
15829 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
15830 }
15831 ],
15832 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
15833 {
15834 "vuid": "VUID-vkCmdDrawIndirect-None-02692",
15835 "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>"
15836 }
15837 ],
15838 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
15839 {
15840 "vuid": "VUID-vkCmdDrawIndirect-None-02693",
15841 "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>"
15842 }
15843 ],
15844 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
15845 {
15846 "vuid": "VUID-vkCmdDrawIndirect-filterCubic-02694",
15847 "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>"
15848 },
15849 {
15850 "vuid": "VUID-vkCmdDrawIndirect-filterCubicMinmax-02695",
15851 "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_EXT</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX_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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
15852 }
15853 ],
15854 "(VK_NV_corner_sampled_image)": [
15855 {
15856 "vuid": "VUID-vkCmdDrawIndirect-flags-02696",
15857 "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>."
15858 }
15859 ],
15860 "(VK_VERSION_1_1)": [
15861 {
15862 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02707",
15863 "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"
15864 },
15865 {
15866 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02711",
15867 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
15868 }
15869 ],
15870 "(VK_VERSION_1_1,VK_KHR_multiview)": [
15871 {
15872 "vuid": "VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-02688",
15873 "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>."
15874 }
15875 ],
15876 "(VK_EXT_sample_locations)": [
15877 {
15878 "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-02689",
15879 "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"
15880 }
15881 ]
15882 },
15883 "VkDrawIndirectCommand": {
15884 "core": [
15885 {
15886 "vuid": "VUID-VkDrawIndirectCommand-None-00500",
15887 "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>"
15888 },
15889 {
15890 "vuid": "VUID-VkDrawIndirectCommand-firstInstance-00501",
15891 "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>"
15892 }
15893 ]
15894 },
15895 "vkCmdDrawIndirectCountKHR": {
15896 "(VK_KHR_draw_indirect_count)": [
15897 {
15898 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02690",
15899 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
15900 },
15901 {
15902 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02691",
15903 "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>"
15904 },
15905 {
15906 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02697",
15907 "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>"
15908 },
15909 {
15910 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02698",
15911 "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>"
15912 },
15913 {
15914 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02699",
15915 "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"
15916 },
15917 {
15918 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02700",
15919 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
15920 },
15921 {
15922 "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-02701",
15923 "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>"
15924 },
15925 {
15926 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02702",
15927 "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"
15928 },
15929 {
15930 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02703",
15931 "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"
15932 },
15933 {
15934 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02704",
15935 "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"
15936 },
15937 {
15938 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02705",
15939 "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"
15940 },
15941 {
15942 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02706",
15943 "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"
15944 },
15945 {
15946 "vuid": "VUID-vkCmdDrawIndirectCountKHR-renderPass-02684",
15947 "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>."
15948 },
15949 {
15950 "vuid": "VUID-vkCmdDrawIndirectCountKHR-subpass-02685",
15951 "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>."
15952 },
15953 {
15954 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02686",
15955 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
15956 },
15957 {
15958 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02687",
15959 "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."
15960 },
15961 {
15962 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02720",
15963 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
15964 },
15965 {
15966 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02721",
15967 "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>"
15968 },
15969 {
15970 "vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-02708",
15971 "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"
15972 },
15973 {
15974 "vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-02709",
15975 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
15976 },
15977 {
15978 "vuid": "VUID-vkCmdDrawIndirectCountKHR-offset-02710",
15979 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
15980 },
15981 {
15982 "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-02714",
15983 "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"
15984 },
15985 {
15986 "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-02715",
15987 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
15988 },
15989 {
15990 "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBufferOffset-02716",
15991 "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
15992 },
15993 {
15994 "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-02717",
15995 "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>"
15996 },
15997 {
15998 "vuid": "VUID-vkCmdDrawIndirectCountKHR-stride-03110",
15999 "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>)"
16000 },
16001 {
16002 "vuid": "VUID-vkCmdDrawIndirectCountKHR-maxDrawCount-03111",
16003 "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>"
16004 },
16005 {
16006 "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03121",
16007 "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>"
16008 },
16009 {
16010 "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03122",
16011 "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>"
16012 },
16013 {
16014 "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-parameter",
16015 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16016 },
16017 {
16018 "vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-parameter",
16019 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
16020 },
16021 {
16022 "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-parameter",
16023 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
16024 },
16025 {
16026 "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-recording",
16027 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16028 },
16029 {
16030 "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-cmdpool",
16031 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
16032 },
16033 {
16034 "vuid": "VUID-vkCmdDrawIndirectCountKHR-renderpass",
16035 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
16036 },
16037 {
16038 "vuid": "VUID-vkCmdDrawIndirectCountKHR-commonparent",
16039 "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
16040 }
16041 ],
16042 "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
16043 {
16044 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02692",
16045 "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>"
16046 }
16047 ],
16048 "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
16049 {
16050 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02693",
16051 "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>"
16052 }
16053 ],
16054 "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
16055 {
16056 "vuid": "VUID-vkCmdDrawIndirectCountKHR-filterCubic-02694",
16057 "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>"
16058 },
16059 {
16060 "vuid": "VUID-vkCmdDrawIndirectCountKHR-filterCubicMinmax-02695",
16061 "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_EXT</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX_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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
16062 }
16063 ],
16064 "(VK_KHR_draw_indirect_count)+(VK_NV_corner_sampled_image)": [
16065 {
16066 "vuid": "VUID-vkCmdDrawIndirectCountKHR-flags-02696",
16067 "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>."
16068 }
16069 ],
16070 "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1)": [
16071 {
16072 "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-02707",
16073 "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"
16074 },
16075 {
16076 "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-02711",
16077 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
16078 }
16079 ],
16080 "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
16081 {
16082 "vuid": "VUID-vkCmdDrawIndirectCountKHR-maxMultiviewInstanceIndex-02688",
16083 "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>."
16084 }
16085 ],
16086 "(VK_KHR_draw_indirect_count)+(VK_EXT_sample_locations)": [
16087 {
16088 "vuid": "VUID-vkCmdDrawIndirectCountKHR-sampleLocationsEnable-02689",
16089 "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"
16090 }
16091 ]
16092 },
16093 "vkCmdDrawIndexedIndirect": {
16094 "core": [
16095 {
16096 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02690",
16097 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
16098 },
16099 {
16100 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02691",
16101 "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>"
16102 },
16103 {
16104 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02697",
16105 "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>"
16106 },
16107 {
16108 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02698",
16109 "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>"
16110 },
16111 {
16112 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02699",
16113 "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"
16114 },
16115 {
16116 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02700",
16117 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
16118 },
16119 {
16120 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02701",
16121 "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>"
16122 },
16123 {
16124 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02702",
16125 "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"
16126 },
16127 {
16128 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02703",
16129 "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"
16130 },
16131 {
16132 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02704",
16133 "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"
16134 },
16135 {
16136 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02705",
16137 "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"
16138 },
16139 {
16140 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02706",
16141 "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"
16142 },
16143 {
16144 "vuid": "VUID-vkCmdDrawIndexedIndirect-renderPass-02684",
16145 "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>."
16146 },
16147 {
16148 "vuid": "VUID-vkCmdDrawIndexedIndirect-subpass-02685",
16149 "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>."
16150 },
16151 {
16152 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02686",
16153 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
16154 },
16155 {
16156 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02687",
16157 "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."
16158 },
16159 {
16160 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02720",
16161 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
16162 },
16163 {
16164 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02721",
16165 "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>"
16166 },
16167 {
16168 "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-02708",
16169 "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"
16170 },
16171 {
16172 "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-02709",
16173 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
16174 },
16175 {
16176 "vuid": "VUID-vkCmdDrawIndexedIndirect-offset-02710",
16177 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
16178 },
16179 {
16180 "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-02718",
16181 "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>"
16182 },
16183 {
16184 "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-02719",
16185 "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
16186 },
16187 {
16188 "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00528",
16189 "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>)"
16190 },
16191 {
16192 "vuid": "VUID-vkCmdDrawIndexedIndirect-firstInstance-00530",
16193 "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>"
16194 },
16195 {
16196 "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00539",
16197 "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>"
16198 },
16199 {
16200 "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00540",
16201 "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>"
16202 },
16203 {
16204 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter",
16205 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16206 },
16207 {
16208 "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-parameter",
16209 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
16210 },
16211 {
16212 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-recording",
16213 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16214 },
16215 {
16216 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool",
16217 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
16218 },
16219 {
16220 "vuid": "VUID-vkCmdDrawIndexedIndirect-renderpass",
16221 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
16222 },
16223 {
16224 "vuid": "VUID-vkCmdDrawIndexedIndirect-commonparent",
16225 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
16226 }
16227 ],
16228 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
16229 {
16230 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02692",
16231 "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>"
16232 }
16233 ],
16234 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
16235 {
16236 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02693",
16237 "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>"
16238 }
16239 ],
16240 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
16241 {
16242 "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubic-02694",
16243 "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>"
16244 },
16245 {
16246 "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695",
16247 "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_EXT</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX_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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
16248 }
16249 ],
16250 "(VK_NV_corner_sampled_image)": [
16251 {
16252 "vuid": "VUID-vkCmdDrawIndexedIndirect-flags-02696",
16253 "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>."
16254 }
16255 ],
16256 "(VK_VERSION_1_1)": [
16257 {
16258 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707",
16259 "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"
16260 },
16261 {
16262 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711",
16263 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
16264 }
16265 ],
16266 "(VK_VERSION_1_1,VK_KHR_multiview)": [
16267 {
16268 "vuid": "VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-02688",
16269 "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>."
16270 }
16271 ],
16272 "(VK_EXT_sample_locations)": [
16273 {
16274 "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-02689",
16275 "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"
16276 }
16277 ]
16278 },
16279 "VkDrawIndexedIndirectCommand": {
16280 "core": [
16281 {
16282 "vuid": "VUID-VkDrawIndexedIndirectCommand-None-00552",
16283 "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>"
16284 },
16285 {
16286 "vuid": "VUID-VkDrawIndexedIndirectCommand-indexSize-00553",
16287 "text": " <span class=\"eq\">(<code>indexSize</code> * (<code>firstIndex</code> &#43; <code>indexCount</code>) &#43; <code>offset</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to the size of the bound index buffer, with <code>indexSize</code> being based on the type specified by <code>indexType</code>, where the index buffer, <code>indexType</code>, and <code>offset</code> are specified via <code>vkCmdBindIndexBuffer</code>"
16288 },
16289 {
16290 "vuid": "VUID-VkDrawIndexedIndirectCommand-firstInstance-00554",
16291 "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>"
16292 }
16293 ]
16294 },
16295 "vkCmdDrawIndexedIndirectCountKHR": {
16296 "(VK_KHR_draw_indirect_count)": [
16297 {
16298 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02690",
16299 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
16300 },
16301 {
16302 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02691",
16303 "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>"
16304 },
16305 {
16306 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02697",
16307 "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>"
16308 },
16309 {
16310 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02698",
16311 "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>"
16312 },
16313 {
16314 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02699",
16315 "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"
16316 },
16317 {
16318 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02700",
16319 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
16320 },
16321 {
16322 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-02701",
16323 "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>"
16324 },
16325 {
16326 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02702",
16327 "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"
16328 },
16329 {
16330 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02703",
16331 "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"
16332 },
16333 {
16334 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02704",
16335 "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"
16336 },
16337 {
16338 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02705",
16339 "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"
16340 },
16341 {
16342 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02706",
16343 "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"
16344 },
16345 {
16346 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-renderPass-02684",
16347 "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>."
16348 },
16349 {
16350 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-subpass-02685",
16351 "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>."
16352 },
16353 {
16354 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02686",
16355 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
16356 },
16357 {
16358 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02687",
16359 "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."
16360 },
16361 {
16362 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02720",
16363 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
16364 },
16365 {
16366 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02721",
16367 "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>"
16368 },
16369 {
16370 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-02708",
16371 "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"
16372 },
16373 {
16374 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-02709",
16375 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
16376 },
16377 {
16378 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-offset-02710",
16379 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
16380 },
16381 {
16382 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-02714",
16383 "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"
16384 },
16385 {
16386 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-02715",
16387 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
16388 },
16389 {
16390 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBufferOffset-02716",
16391 "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
16392 },
16393 {
16394 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-02717",
16395 "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>"
16396 },
16397 {
16398 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-stride-03142",
16399 "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>)"
16400 },
16401 {
16402 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-maxDrawCount-03143",
16403 "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>"
16404 },
16405 {
16406 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03153",
16407 "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>"
16408 },
16409 {
16410 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03154",
16411 "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>"
16412 },
16413 {
16414 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-parameter",
16415 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16416 },
16417 {
16418 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-parameter",
16419 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
16420 },
16421 {
16422 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-parameter",
16423 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
16424 },
16425 {
16426 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-recording",
16427 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16428 },
16429 {
16430 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-cmdpool",
16431 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
16432 },
16433 {
16434 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-renderpass",
16435 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
16436 },
16437 {
16438 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commonparent",
16439 "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
16440 }
16441 ],
16442 "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
16443 {
16444 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02692",
16445 "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>"
16446 }
16447 ],
16448 "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
16449 {
16450 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02693",
16451 "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>"
16452 }
16453 ],
16454 "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
16455 {
16456 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-filterCubic-02694",
16457 "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>"
16458 },
16459 {
16460 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-filterCubicMinmax-02695",
16461 "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_EXT</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX_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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
16462 }
16463 ],
16464 "(VK_KHR_draw_indirect_count)+(VK_NV_corner_sampled_image)": [
16465 {
16466 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-flags-02696",
16467 "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>."
16468 }
16469 ],
16470 "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1)": [
16471 {
16472 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-02707",
16473 "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"
16474 },
16475 {
16476 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-02711",
16477 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
16478 }
16479 ],
16480 "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
16481 {
16482 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-maxMultiviewInstanceIndex-02688",
16483 "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>."
16484 }
16485 ],
16486 "(VK_KHR_draw_indirect_count)+(VK_EXT_sample_locations)": [
16487 {
16488 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-sampleLocationsEnable-02689",
16489 "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"
16490 }
16491 ]
16492 },
16493 "vkCmdDrawIndirectByteCountEXT": {
16494 "(VK_EXT_transform_feedback)": [
16495 {
16496 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02690",
16497 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
16498 },
16499 {
16500 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02691",
16501 "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>"
16502 },
16503 {
16504 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02697",
16505 "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>"
16506 },
16507 {
16508 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02698",
16509 "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>"
16510 },
16511 {
16512 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02699",
16513 "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"
16514 },
16515 {
16516 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02700",
16517 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
16518 },
16519 {
16520 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02701",
16521 "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>"
16522 },
16523 {
16524 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02702",
16525 "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"
16526 },
16527 {
16528 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02703",
16529 "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"
16530 },
16531 {
16532 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02704",
16533 "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"
16534 },
16535 {
16536 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02705",
16537 "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"
16538 },
16539 {
16540 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02706",
16541 "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"
16542 },
16543 {
16544 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02684",
16545 "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>."
16546 },
16547 {
16548 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-subpass-02685",
16549 "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>."
16550 },
16551 {
16552 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02686",
16553 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
16554 },
16555 {
16556 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02687",
16557 "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."
16558 },
16559 {
16560 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02720",
16561 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
16562 },
16563 {
16564 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02721",
16565 "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>"
16566 },
16567 {
16568 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287",
16569 "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
16570 },
16571 {
16572 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288",
16573 "text": " The implementation <strong class=\"purple\">must</strong> support <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackDraw</code>"
16574 },
16575 {
16576 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289",
16577 "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>"
16578 },
16579 {
16580 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290",
16581 "text": " <code>counterBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
16582 },
16583 {
16584 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter",
16585 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16586 },
16587 {
16588 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter",
16589 "text": " <code>counterBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
16590 },
16591 {
16592 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-recording",
16593 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16594 },
16595 {
16596 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool",
16597 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
16598 },
16599 {
16600 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderpass",
16601 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
16602 },
16603 {
16604 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commonparent",
16605 "text": " Both of <code>commandBuffer</code>, and <code>counterBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
16606 }
16607 ],
16608 "(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
16609 {
16610 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02692",
16611 "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>"
16612 }
16613 ],
16614 "(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
16615 {
16616 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02693",
16617 "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>"
16618 }
16619 ],
16620 "(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
16621 {
16622 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02694",
16623 "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>"
16624 },
16625 {
16626 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02695",
16627 "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_EXT</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX_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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
16628 }
16629 ],
16630 "(VK_EXT_transform_feedback)+(VK_NV_corner_sampled_image)": [
16631 {
16632 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-flags-02696",
16633 "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>."
16634 }
16635 ],
16636 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
16637 {
16638 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02707",
16639 "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"
16640 },
16641 {
16642 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646",
16643 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
16644 }
16645 ],
16646 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
16647 {
16648 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02688",
16649 "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>."
16650 }
16651 ],
16652 "(VK_EXT_transform_feedback)+(VK_EXT_sample_locations)": [
16653 {
16654 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02689",
16655 "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"
16656 }
16657 ]
16658 },
16659 "vkCmdBeginConditionalRenderingEXT": {
16660 "(VK_EXT_conditional_rendering)": [
16661 {
16662 "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-None-01980",
16663 "text": " Conditional rendering <strong class=\"purple\">must</strong> not already be <a href=\"#active-conditional-rendering\">active</a>"
16664 },
16665 {
16666 "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter",
16667 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16668 },
16669 {
16670 "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-pConditionalRenderingBegin-parameter",
16671 "text": " <code>pConditionalRenderingBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkConditionalRenderingBeginInfoEXT</code> structure"
16672 },
16673 {
16674 "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-recording",
16675 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16676 },
16677 {
16678 "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-cmdpool",
16679 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
16680 }
16681 ]
16682 },
16683 "VkConditionalRenderingBeginInfoEXT": {
16684 "(VK_EXT_conditional_rendering)": [
16685 {
16686 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01981",
16687 "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"
16688 },
16689 {
16690 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01982",
16691 "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"
16692 },
16693 {
16694 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01983",
16695 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code> by at least 32 bits."
16696 },
16697 {
16698 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01984",
16699 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of 4"
16700 },
16701 {
16702 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-sType-sType",
16703 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT</code>"
16704 },
16705 {
16706 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-pNext-pNext",
16707 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
16708 },
16709 {
16710 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-parameter",
16711 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
16712 },
16713 {
16714 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-flags-parameter",
16715 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkConditionalRenderingFlagBitsEXT\">VkConditionalRenderingFlagBitsEXT</a> values"
16716 }
16717 ]
16718 },
16719 "vkCmdEndConditionalRenderingEXT": {
16720 "(VK_EXT_conditional_rendering)": [
16721 {
16722 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01985",
16723 "text": " Conditional rendering <strong class=\"purple\">must</strong> be <a href=\"#active-conditional-rendering\">active</a>"
16724 },
16725 {
16726 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01986",
16727 "text": " If conditional rendering was made <a href=\"#active-conditional-rendering\">active</a> outside of a render pass instance, it must not be ended inside a render pass instance"
16728 },
16729 {
16730 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01987",
16731 "text": " If conditional rendering was made <a href=\"#active-conditional-rendering\">active</a> within a subpass it must be ended in the same subpass"
16732 },
16733 {
16734 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter",
16735 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16736 },
16737 {
16738 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-recording",
16739 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16740 },
16741 {
16742 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-cmdpool",
16743 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
16744 }
16745 ]
16746 },
16747 "vkCmdDrawMeshTasksNV": {
16748 "(VK_NV_mesh_shader)": [
16749 {
16750 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02690",
16751 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
16752 },
16753 {
16754 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02691",
16755 "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>"
16756 },
16757 {
16758 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02697",
16759 "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>"
16760 },
16761 {
16762 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02698",
16763 "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>"
16764 },
16765 {
16766 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02699",
16767 "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"
16768 },
16769 {
16770 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02700",
16771 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
16772 },
16773 {
16774 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02701",
16775 "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>"
16776 },
16777 {
16778 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02702",
16779 "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"
16780 },
16781 {
16782 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02703",
16783 "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"
16784 },
16785 {
16786 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02704",
16787 "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"
16788 },
16789 {
16790 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02705",
16791 "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"
16792 },
16793 {
16794 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02706",
16795 "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"
16796 },
16797 {
16798 "vuid": "VUID-vkCmdDrawMeshTasksNV-renderPass-02684",
16799 "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>."
16800 },
16801 {
16802 "vuid": "VUID-vkCmdDrawMeshTasksNV-subpass-02685",
16803 "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>."
16804 },
16805 {
16806 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02686",
16807 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
16808 },
16809 {
16810 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02687",
16811 "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."
16812 },
16813 {
16814 "vuid": "VUID-vkCmdDrawMeshTasksNV-taskCount-02119",
16815 "text": " <code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>"
16816 },
16817 {
16818 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter",
16819 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16820 },
16821 {
16822 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-recording",
16823 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16824 },
16825 {
16826 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool",
16827 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
16828 },
16829 {
16830 "vuid": "VUID-vkCmdDrawMeshTasksNV-renderpass",
16831 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
16832 }
16833 ],
16834 "(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
16835 {
16836 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02692",
16837 "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>"
16838 }
16839 ],
16840 "(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
16841 {
16842 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02693",
16843 "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>"
16844 }
16845 ],
16846 "(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
16847 {
16848 "vuid": "VUID-vkCmdDrawMeshTasksNV-filterCubic-02694",
16849 "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>"
16850 },
16851 {
16852 "vuid": "VUID-vkCmdDrawMeshTasksNV-filterCubicMinmax-02695",
16853 "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_EXT</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX_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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
16854 }
16855 ],
16856 "(VK_NV_mesh_shader)+(VK_NV_corner_sampled_image)": [
16857 {
16858 "vuid": "VUID-vkCmdDrawMeshTasksNV-flags-02696",
16859 "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>."
16860 }
16861 ],
16862 "(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [
16863 {
16864 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02707",
16865 "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"
16866 }
16867 ],
16868 "(VK_NV_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
16869 {
16870 "vuid": "VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02688",
16871 "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>."
16872 }
16873 ],
16874 "(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [
16875 {
16876 "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02689",
16877 "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"
16878 }
16879 ]
16880 },
16881 "vkCmdDrawMeshTasksIndirectNV": {
16882 "(VK_NV_mesh_shader)": [
16883 {
16884 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02690",
16885 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
16886 },
16887 {
16888 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02691",
16889 "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>"
16890 },
16891 {
16892 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02697",
16893 "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>"
16894 },
16895 {
16896 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02698",
16897 "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>"
16898 },
16899 {
16900 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02699",
16901 "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"
16902 },
16903 {
16904 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02700",
16905 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
16906 },
16907 {
16908 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02701",
16909 "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>"
16910 },
16911 {
16912 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02702",
16913 "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"
16914 },
16915 {
16916 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02703",
16917 "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"
16918 },
16919 {
16920 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02704",
16921 "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"
16922 },
16923 {
16924 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02705",
16925 "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"
16926 },
16927 {
16928 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02706",
16929 "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"
16930 },
16931 {
16932 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02684",
16933 "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>."
16934 },
16935 {
16936 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-subpass-02685",
16937 "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>."
16938 },
16939 {
16940 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02686",
16941 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
16942 },
16943 {
16944 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02687",
16945 "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."
16946 },
16947 {
16948 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708",
16949 "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"
16950 },
16951 {
16952 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02709",
16953 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
16954 },
16955 {
16956 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-offset-02710",
16957 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
16958 },
16959 {
16960 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02718",
16961 "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>"
16962 },
16963 {
16964 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02719",
16965 "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
16966 },
16967 {
16968 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02146",
16969 "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>)"
16970 },
16971 {
16972 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02156",
16973 "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>"
16974 },
16975 {
16976 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157",
16977 "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>"
16978 },
16979 {
16980 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter",
16981 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
16982 },
16983 {
16984 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter",
16985 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
16986 },
16987 {
16988 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-recording",
16989 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
16990 },
16991 {
16992 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-cmdpool",
16993 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
16994 },
16995 {
16996 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderpass",
16997 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
16998 },
16999 {
17000 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commonparent",
17001 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
17002 }
17003 ],
17004 "(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
17005 {
17006 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02692",
17007 "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>"
17008 }
17009 ],
17010 "(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
17011 {
17012 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02693",
17013 "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>"
17014 }
17015 ],
17016 "(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
17017 {
17018 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubic-02694",
17019 "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>"
17020 },
17021 {
17022 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubicMinmax-02695",
17023 "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_EXT</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX_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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
17024 }
17025 ],
17026 "(VK_NV_mesh_shader)+(VK_NV_corner_sampled_image)": [
17027 {
17028 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-flags-02696",
17029 "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>."
17030 }
17031 ],
17032 "(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [
17033 {
17034 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02707",
17035 "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"
17036 },
17037 {
17038 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02711",
17039 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
17040 }
17041 ],
17042 "(VK_NV_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
17043 {
17044 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02688",
17045 "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>."
17046 }
17047 ],
17048 "(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [
17049 {
17050 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02689",
17051 "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"
17052 }
17053 ]
17054 },
17055 "VkDrawMeshTasksIndirectCommandNV": {
17056 "(VK_NV_mesh_shader)": [
17057 {
17058 "vuid": "VUID-VkDrawMeshTasksIndirectCommandNV-taskCount-02175",
17059 "text": " <code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>"
17060 }
17061 ]
17062 },
17063 "vkCmdDrawMeshTasksIndirectCountNV": {
17064 "(VK_NV_mesh_shader)": [
17065 {
17066 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02690",
17067 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
17068 },
17069 {
17070 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02691",
17071 "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>"
17072 },
17073 {
17074 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02697",
17075 "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>"
17076 },
17077 {
17078 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02698",
17079 "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>"
17080 },
17081 {
17082 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02699",
17083 "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"
17084 },
17085 {
17086 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02700",
17087 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
17088 },
17089 {
17090 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02701",
17091 "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>"
17092 },
17093 {
17094 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02702",
17095 "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"
17096 },
17097 {
17098 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02703",
17099 "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"
17100 },
17101 {
17102 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02704",
17103 "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"
17104 },
17105 {
17106 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02705",
17107 "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"
17108 },
17109 {
17110 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02706",
17111 "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"
17112 },
17113 {
17114 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02684",
17115 "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>."
17116 },
17117 {
17118 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-02685",
17119 "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>."
17120 },
17121 {
17122 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02686",
17123 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
17124 },
17125 {
17126 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02687",
17127 "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."
17128 },
17129 {
17130 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708",
17131 "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"
17132 },
17133 {
17134 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02709",
17135 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
17136 },
17137 {
17138 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-offset-02710",
17139 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
17140 },
17141 {
17142 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02714",
17143 "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"
17144 },
17145 {
17146 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02715",
17147 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
17148 },
17149 {
17150 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-02716",
17151 "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
17152 },
17153 {
17154 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02717",
17155 "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>"
17156 },
17157 {
17158 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182",
17159 "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>)"
17160 },
17161 {
17162 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183",
17163 "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>"
17164 },
17165 {
17166 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02191",
17167 "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>"
17168 },
17169 {
17170 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02192",
17171 "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>"
17172 },
17173 {
17174 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter",
17175 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17176 },
17177 {
17178 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter",
17179 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
17180 },
17181 {
17182 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-parameter",
17183 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
17184 },
17185 {
17186 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-recording",
17187 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17188 },
17189 {
17190 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-cmdpool",
17191 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17192 },
17193 {
17194 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderpass",
17195 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
17196 },
17197 {
17198 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent",
17199 "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
17200 }
17201 ],
17202 "(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
17203 {
17204 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02692",
17205 "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>"
17206 }
17207 ],
17208 "(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
17209 {
17210 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02693",
17211 "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>"
17212 }
17213 ],
17214 "(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
17215 {
17216 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubic-02694",
17217 "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>"
17218 },
17219 {
17220 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubicMinmax-02695",
17221 "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_EXT</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX_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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
17222 }
17223 ],
17224 "(VK_NV_mesh_shader)+(VK_NV_corner_sampled_image)": [
17225 {
17226 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-02696",
17227 "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>."
17228 }
17229 ],
17230 "(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [
17231 {
17232 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02707",
17233 "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"
17234 },
17235 {
17236 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02711",
17237 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
17238 }
17239 ],
17240 "(VK_NV_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
17241 {
17242 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02688",
17243 "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>."
17244 }
17245 ],
17246 "(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [
17247 {
17248 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02689",
17249 "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"
17250 }
17251 ]
17252 },
17253 "VkPipelineVertexInputStateCreateInfo": {
17254 "core": [
17255 {
17256 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613",
17257 "text": " <code>vertexBindingDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
17258 },
17259 {
17260 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614",
17261 "text": " <code>vertexAttributeDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>"
17262 },
17263 {
17264 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-binding-00615",
17265 "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>"
17266 },
17267 {
17268 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616",
17269 "text": " All elements of <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> describe distinct binding numbers"
17270 },
17271 {
17272 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617",
17273 "text": " All elements of <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> describe distinct attribute locations"
17274 },
17275 {
17276 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-sType-sType",
17277 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO</code>"
17278 },
17279 {
17280 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext",
17281 "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>"
17282 },
17283 {
17284 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask",
17285 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17286 },
17287 {
17288 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter",
17289 "text": " If <code>vertexBindingDescriptionCount</code> is not <code>0</code>, <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDescriptionCount</code> valid <code>VkVertexInputBindingDescription</code> structures"
17290 },
17291 {
17292 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter",
17293 "text": " If <code>vertexAttributeDescriptionCount</code> is not <code>0</code>, <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexAttributeDescriptionCount</code> valid <code>VkVertexInputAttributeDescription</code> structures"
17294 }
17295 ]
17296 },
17297 "VkVertexInputBindingDescription": {
17298 "core": [
17299 {
17300 "vuid": "VUID-VkVertexInputBindingDescription-binding-00618",
17301 "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
17302 },
17303 {
17304 "vuid": "VUID-VkVertexInputBindingDescription-stride-00619",
17305 "text": " <code>stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindingStride</code>"
17306 },
17307 {
17308 "vuid": "VUID-VkVertexInputBindingDescription-inputRate-parameter",
17309 "text": " <code>inputRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVertexInputRate\">VkVertexInputRate</a> value"
17310 }
17311 ]
17312 },
17313 "VkVertexInputAttributeDescription": {
17314 "core": [
17315 {
17316 "vuid": "VUID-VkVertexInputAttributeDescription-location-00620",
17317 "text": " <code>location</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>"
17318 },
17319 {
17320 "vuid": "VUID-VkVertexInputAttributeDescription-binding-00621",
17321 "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
17322 },
17323 {
17324 "vuid": "VUID-VkVertexInputAttributeDescription-offset-00622",
17325 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributeOffset</code>"
17326 },
17327 {
17328 "vuid": "VUID-VkVertexInputAttributeDescription-format-00623",
17329 "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>"
17330 },
17331 {
17332 "vuid": "VUID-VkVertexInputAttributeDescription-format-parameter",
17333 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
17334 }
17335 ]
17336 },
17337 "vkCmdBindVertexBuffers": {
17338 "core": [
17339 {
17340 "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00624",
17341 "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
17342 },
17343 {
17344 "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00625",
17345 "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>"
17346 },
17347 {
17348 "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-00626",
17349 "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>"
17350 },
17351 {
17352 "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00627",
17353 "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"
17354 },
17355 {
17356 "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00628",
17357 "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"
17358 },
17359 {
17360 "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-parameter",
17361 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17362 },
17363 {
17364 "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-parameter",
17365 "text": " <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <code>VkBuffer</code> handles"
17366 },
17367 {
17368 "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-parameter",
17369 "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
17370 },
17371 {
17372 "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-recording",
17373 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17374 },
17375 {
17376 "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-cmdpool",
17377 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17378 },
17379 {
17380 "vuid": "VUID-vkCmdBindVertexBuffers-bindingCount-arraylength",
17381 "text": " <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17382 },
17383 {
17384 "vuid": "VUID-vkCmdBindVertexBuffers-commonparent",
17385 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
17386 }
17387 ]
17388 },
17389 "VkPipelineVertexInputDivisorStateCreateInfoEXT": {
17390 "(VK_EXT_vertex_attribute_divisor)": [
17391 {
17392 "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-sType-sType",
17393 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT</code>"
17394 },
17395 {
17396 "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-pVertexBindingDivisors-parameter",
17397 "text": " <code>pVertexBindingDivisors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDivisorCount</code> <code>VkVertexInputBindingDivisorDescriptionEXT</code> structures"
17398 },
17399 {
17400 "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-vertexBindingDivisorCount-arraylength",
17401 "text": " <code>vertexBindingDivisorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17402 }
17403 ]
17404 },
17405 "VkVertexInputBindingDivisorDescriptionEXT": {
17406 "(VK_EXT_vertex_attribute_divisor)": [
17407 {
17408 "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-binding-01869",
17409 "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
17410 },
17411 {
17412 "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateZeroDivisor-02228",
17413 "text": " If the <code>vertexAttributeInstanceRateZeroDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
17414 },
17415 {
17416 "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateDivisor-02229",
17417 "text": " If the <code>vertexAttributeInstanceRateDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> be <code>1</code>"
17418 },
17419 {
17420 "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-divisor-01870",
17421 "text": " <code>divisor</code> <strong class=\"purple\">must</strong> be a value between <code>0</code> and <code>VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</code>::<code>maxVertexAttribDivisor</code>, inclusive."
17422 },
17423 {
17424 "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-inputRate-01871",
17425 "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>."
17426 }
17427 ]
17428 },
17429 "VkPipelineTessellationStateCreateInfo": {
17430 "core": [
17431 {
17432 "vuid": "VUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214",
17433 "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>"
17434 },
17435 {
17436 "vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-sType",
17437 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO</code>"
17438 },
17439 {
17440 "vuid": "VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext",
17441 "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>"
17442 },
17443 {
17444 "vuid": "VUID-VkPipelineTessellationStateCreateInfo-flags-zerobitmask",
17445 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17446 }
17447 ]
17448 },
17449 "VkPipelineTessellationDomainOriginStateCreateInfo": {
17450 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
17451 {
17452 "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-sType-sType",
17453 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO</code>"
17454 },
17455 {
17456 "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-domainOrigin-parameter",
17457 "text": " <code>domainOrigin</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTessellationDomainOrigin\">VkTessellationDomainOrigin</a> value"
17458 }
17459 ]
17460 },
17461 "vkCmdBindTransformFeedbackBuffersEXT": {
17462 "(VK_EXT_transform_feedback)": [
17463 {
17464 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355",
17465 "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
17466 },
17467 {
17468 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02356",
17469 "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
17470 },
17471 {
17472 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02357",
17473 "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>"
17474 },
17475 {
17476 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02358",
17477 "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>"
17478 },
17479 {
17480 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02359",
17481 "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be a multiple of 4"
17482 },
17483 {
17484 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02360",
17485 "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"
17486 },
17487 {
17488 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSize-02361",
17489 "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>"
17490 },
17491 {
17492 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-02362",
17493 "text": " All elements of <code>pSizes</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the corresponding buffer in <code>pBuffers</code>"
17494 },
17495 {
17496 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02363",
17497 "text": " All elements of <code>pOffsets</code> plus <code>pSizes</code>, where the <code>pSizes</code>, element is not <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to the size of the corresponding element in <code>pBuffers</code>"
17498 },
17499 {
17500 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02364",
17501 "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"
17502 },
17503 {
17504 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-None-02365",
17505 "text": " Transform feedback <strong class=\"purple\">must</strong> not be active when the <code>vkCmdBindTransformFeedbackBuffersEXT</code> command is recorded"
17506 },
17507 {
17508 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter",
17509 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17510 },
17511 {
17512 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-parameter",
17513 "text": " <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <code>VkBuffer</code> handles"
17514 },
17515 {
17516 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-parameter",
17517 "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
17518 },
17519 {
17520 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-parameter",
17521 "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"
17522 },
17523 {
17524 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-recording",
17525 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17526 },
17527 {
17528 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-cmdpool",
17529 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17530 },
17531 {
17532 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength",
17533 "text": " If <code>pSizes</code> is not <code>NULL</code>, <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17534 },
17535 {
17536 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commonparent",
17537 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
17538 }
17539 ]
17540 },
17541 "vkCmdBeginTransformFeedbackEXT": {
17542 "(VK_EXT_transform_feedback)": [
17543 {
17544 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-transformFeedback-02366",
17545 "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
17546 },
17547 {
17548 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02367",
17549 "text": " Transform feedback <strong class=\"purple\">must</strong> not be active"
17550 },
17551 {
17552 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02368",
17553 "text": " <code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
17554 },
17555 {
17556 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02369",
17557 "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>"
17558 },
17559 {
17560 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-counterBufferCount-02607",
17561 "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>"
17562 },
17563 {
17564 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-02370",
17565 "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"
17566 },
17567 {
17568 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffer-02371",
17569 "text": " If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>"
17570 },
17571 {
17572 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffers-02372",
17573 "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>"
17574 },
17575 {
17576 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter",
17577 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17578 },
17579 {
17580 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-parameter",
17581 "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"
17582 },
17583 {
17584 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-recording",
17585 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17586 },
17587 {
17588 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-cmdpool",
17589 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17590 },
17591 {
17592 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-renderpass",
17593 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
17594 },
17595 {
17596 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commonparent",
17597 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCounterBuffers</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
17598 }
17599 ],
17600 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
17601 {
17602 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02373",
17603 "text": " Transform feedback <strong class=\"purple\">must</strong> not be made active in a render pass instance with multiview enabled"
17604 }
17605 ]
17606 },
17607 "vkCmdEndTransformFeedbackEXT": {
17608 "(VK_EXT_transform_feedback)": [
17609 {
17610 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374",
17611 "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
17612 },
17613 {
17614 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-None-02375",
17615 "text": " Transform feedback <strong class=\"purple\">must</strong> be active"
17616 },
17617 {
17618 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376",
17619 "text": " <code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
17620 },
17621 {
17622 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377",
17623 "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>"
17624 },
17625 {
17626 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-counterBufferCount-02608",
17627 "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>"
17628 },
17629 {
17630 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378",
17631 "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"
17632 },
17633 {
17634 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379",
17635 "text": " If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>"
17636 },
17637 {
17638 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380",
17639 "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>"
17640 },
17641 {
17642 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter",
17643 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17644 },
17645 {
17646 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-parameter",
17647 "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"
17648 },
17649 {
17650 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-recording",
17651 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17652 },
17653 {
17654 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-cmdpool",
17655 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17656 },
17657 {
17658 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-renderpass",
17659 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
17660 },
17661 {
17662 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commonparent",
17663 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCounterBuffers</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
17664 }
17665 ]
17666 },
17667 "VkPipelineViewportSwizzleStateCreateInfoNV": {
17668 "(VK_NV_viewport_swizzle)": [
17669 {
17670 "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-01215",
17671 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> match the <code>viewportCount</code> set in <code>VkPipelineViewportStateCreateInfo</code>"
17672 },
17673 {
17674 "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-sType-sType",
17675 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV</code>"
17676 },
17677 {
17678 "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-flags-zerobitmask",
17679 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17680 },
17681 {
17682 "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-pViewportSwizzles-parameter",
17683 "text": " <code>pViewportSwizzles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkViewportSwizzleNV</code> structures"
17684 },
17685 {
17686 "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-arraylength",
17687 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17688 }
17689 ]
17690 },
17691 "VkViewportSwizzleNV": {
17692 "(VK_NV_viewport_swizzle)": [
17693 {
17694 "vuid": "VUID-VkViewportSwizzleNV-x-parameter",
17695 "text": " <code>x</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
17696 },
17697 {
17698 "vuid": "VUID-VkViewportSwizzleNV-y-parameter",
17699 "text": " <code>y</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
17700 },
17701 {
17702 "vuid": "VUID-VkViewportSwizzleNV-z-parameter",
17703 "text": " <code>z</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
17704 },
17705 {
17706 "vuid": "VUID-VkViewportSwizzleNV-w-parameter",
17707 "text": " <code>w</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
17708 }
17709 ]
17710 },
17711 "VkPipelineViewportWScalingStateCreateInfoNV": {
17712 "(VK_NV_clip_space_w_scaling)": [
17713 {
17714 "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-sType-sType",
17715 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV</code>"
17716 },
17717 {
17718 "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-viewportCount-arraylength",
17719 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17720 }
17721 ]
17722 },
17723 "vkCmdSetViewportWScalingNV": {
17724 "(VK_NV_clip_space_w_scaling)": [
17725 {
17726 "vuid": "VUID-vkCmdSetViewportWScalingNV-None-01322",
17727 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled"
17728 },
17729 {
17730 "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01323",
17731 "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxViewports</code>"
17732 },
17733 {
17734 "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01324",
17735 "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"
17736 },
17737 {
17738 "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter",
17739 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17740 },
17741 {
17742 "vuid": "VUID-vkCmdSetViewportWScalingNV-pViewportWScalings-parameter",
17743 "text": " <code>pViewportWScalings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> <code>VkViewportWScalingNV</code> structures"
17744 },
17745 {
17746 "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-recording",
17747 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17748 },
17749 {
17750 "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-cmdpool",
17751 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17752 },
17753 {
17754 "vuid": "VUID-vkCmdSetViewportWScalingNV-viewportCount-arraylength",
17755 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17756 }
17757 ]
17758 },
17759 "VkPipelineViewportStateCreateInfo": {
17760 "core": [
17761 {
17762 "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216",
17763 "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>"
17764 },
17765 {
17766 "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217",
17767 "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>"
17768 },
17769 {
17770 "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218",
17771 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
17772 },
17773 {
17774 "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219",
17775 "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
17776 },
17777 {
17778 "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01220",
17779 "text": " <code>scissorCount</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be identical"
17780 },
17781 {
17782 "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-sType",
17783 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO</code>"
17784 },
17785 {
17786 "vuid": "VUID-VkPipelineViewportStateCreateInfo-pNext-pNext",
17787 "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>"
17788 },
17789 {
17790 "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-unique",
17791 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
17792 },
17793 {
17794 "vuid": "VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask",
17795 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17796 },
17797 {
17798 "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-arraylength",
17799 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17800 },
17801 {
17802 "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-arraylength",
17803 "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17804 }
17805 ],
17806 "(VK_NV_clip_space_w_scaling)": [
17807 {
17808 "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726",
17809 "text": " If the <code>viewportWScalingEnable</code> member of a <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure chained to the <code>pNext</code> chain is <code>VK_TRUE</code>, the <code>viewportCount</code> member of the <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure <strong class=\"purple\">must</strong> be equal to <code>viewportCount</code>"
17810 }
17811 ]
17812 },
17813 "vkCmdSetViewport": {
17814 "core": [
17815 {
17816 "vuid": "VUID-vkCmdSetViewport-None-01221",
17817 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled"
17818 },
17819 {
17820 "vuid": "VUID-vkCmdSetViewport-firstViewport-01222",
17821 "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
17822 },
17823 {
17824 "vuid": "VUID-vkCmdSetViewport-firstViewport-01223",
17825 "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"
17826 },
17827 {
17828 "vuid": "VUID-vkCmdSetViewport-firstViewport-01224",
17829 "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>"
17830 },
17831 {
17832 "vuid": "VUID-vkCmdSetViewport-viewportCount-01225",
17833 "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>"
17834 },
17835 {
17836 "vuid": "VUID-vkCmdSetViewport-commandBuffer-parameter",
17837 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
17838 },
17839 {
17840 "vuid": "VUID-vkCmdSetViewport-pViewports-parameter",
17841 "text": " <code>pViewports</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkViewport</code> structures"
17842 },
17843 {
17844 "vuid": "VUID-vkCmdSetViewport-commandBuffer-recording",
17845 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
17846 },
17847 {
17848 "vuid": "VUID-vkCmdSetViewport-commandBuffer-cmdpool",
17849 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
17850 },
17851 {
17852 "vuid": "VUID-vkCmdSetViewport-viewportCount-arraylength",
17853 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
17854 }
17855 ]
17856 },
17857 "VkViewport": {
17858 "core": [
17859 {
17860 "vuid": "VUID-VkViewport-width-01770",
17861 "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>"
17862 },
17863 {
17864 "vuid": "VUID-VkViewport-width-01771",
17865 "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[0]"
17866 },
17867 {
17868 "vuid": "VUID-VkViewport-height-01773",
17869 "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]"
17870 },
17871 {
17872 "vuid": "VUID-VkViewport-x-01774",
17873 "text": " <code>x</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]"
17874 },
17875 {
17876 "vuid": "VUID-VkViewport-x-01232",
17877 "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]"
17878 },
17879 {
17880 "vuid": "VUID-VkViewport-y-01775",
17881 "text": " <code>y</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]"
17882 },
17883 {
17884 "vuid": "VUID-VkViewport-y-01233",
17885 "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]"
17886 }
17887 ],
17888 "!(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
17889 {
17890 "vuid": "VUID-VkViewport-height-01772",
17891 "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>"
17892 }
17893 ],
17894 "(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
17895 {
17896 "vuid": "VUID-VkViewport-y-01776",
17897 "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]"
17898 },
17899 {
17900 "vuid": "VUID-VkViewport-y-01777",
17901 "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]"
17902 }
17903 ],
17904 "(VK_EXT_depth_range_unrestricted)": [
17905 {
17906 "vuid": "VUID-VkViewport-minDepth-01234",
17907 "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"
17908 },
17909 {
17910 "vuid": "VUID-VkViewport-maxDepth-01235",
17911 "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"
17912 }
17913 ],
17914 "!(VK_EXT_depth_range_unrestricted)": [
17915 {
17916 "vuid": "VUID-VkViewport-minDepth-02540",
17917 "text": " <code>minDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
17918 },
17919 {
17920 "vuid": "VUID-VkViewport-maxDepth-02541",
17921 "text": " <code>maxDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
17922 }
17923 ]
17924 },
17925 "VkPipelineRasterizationStateCreateInfo": {
17926 "core": [
17927 {
17928 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782",
17929 "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>"
17930 },
17931 {
17932 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-sType",
17933 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO</code>"
17934 },
17935 {
17936 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-pNext-pNext",
17937 "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>"
17938 },
17939 {
17940 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-unique",
17941 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
17942 },
17943 {
17944 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask",
17945 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17946 },
17947 {
17948 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter",
17949 "text": " <code>polygonMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPolygonMode\">VkPolygonMode</a> value"
17950 },
17951 {
17952 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter",
17953 "text": " <code>cullMode</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCullModeFlagBits\">VkCullModeFlagBits</a> values"
17954 },
17955 {
17956 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter",
17957 "text": " <code>frontFace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFrontFace\">VkFrontFace</a> value"
17958 }
17959 ],
17960 "!(VK_NV_fill_rectangle)": [
17961 {
17962 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01413",
17963 "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>"
17964 }
17965 ],
17966 "(VK_NV_fill_rectangle)": [
17967 {
17968 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507",
17969 "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>"
17970 },
17971 {
17972 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414",
17973 "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>"
17974 }
17975 ]
17976 },
17977 "VkPipelineRasterizationDepthClipStateCreateInfoEXT": {
17978 "(VK_EXT_depth_clip_enable)": [
17979 {
17980 "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-sType-sType",
17981 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT</code>"
17982 },
17983 {
17984 "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-flags-zerobitmask",
17985 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
17986 }
17987 ]
17988 },
17989 "VkPipelineMultisampleStateCreateInfo": {
17990 "core": [
17991 {
17992 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784",
17993 "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>"
17994 },
17995 {
17996 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785",
17997 "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>"
17998 },
17999 {
18000 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786",
18001 "text": " <code>minSampleShading</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>"
18002 },
18003 {
18004 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-sType",
18005 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO</code>"
18006 },
18007 {
18008 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext",
18009 "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>"
18010 },
18011 {
18012 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-unique",
18013 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
18014 },
18015 {
18016 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask",
18017 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
18018 },
18019 {
18020 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter",
18021 "text": " <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
18022 },
18023 {
18024 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter",
18025 "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"
18026 }
18027 ],
18028 "(VK_NV_framebuffer_mixed_samples)": [
18029 {
18030 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415",
18031 "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>"
18032 }
18033 ]
18034 },
18035 "VkPipelineRasterizationStateStreamCreateInfoEXT": {
18036 "(VK_EXT_transform_feedback)": [
18037 {
18038 "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324",
18039 "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>geometryStreams</code> <strong class=\"purple\">must</strong> be enabled"
18040 },
18041 {
18042 "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02325",
18043 "text": " <code>rasterizationStream</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>::<code>maxTransformFeedbackStreams</code>"
18044 },
18045 {
18046 "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02326",
18047 "text": " <code>rasterizationStream</code> <strong class=\"purple\">must</strong> be zero if <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackRasterizationStreamSelect</code> is <code>VK_FALSE</code>"
18048 },
18049 {
18050 "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-sType-sType",
18051 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT</code>"
18052 },
18053 {
18054 "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-flags-zerobitmask",
18055 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
18056 }
18057 ]
18058 },
18059 "VkPipelineRasterizationStateRasterizationOrderAMD": {
18060 "(VK_AMD_rasterization_order)": [
18061 {
18062 "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-sType-sType",
18063 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD</code>"
18064 },
18065 {
18066 "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-rasterizationOrder-parameter",
18067 "text": " <code>rasterizationOrder</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRasterizationOrderAMD\">VkRasterizationOrderAMD</a> value"
18068 }
18069 ]
18070 },
18071 "VkPipelineSampleLocationsStateCreateInfoEXT": {
18072 "(VK_EXT_sample_locations)": [
18073 {
18074 "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sType-sType",
18075 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT</code>"
18076 },
18077 {
18078 "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sampleLocationsInfo-parameter",
18079 "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampleLocationsInfoEXT</code> structure"
18080 }
18081 ]
18082 },
18083 "VkSampleLocationsInfoEXT": {
18084 "(VK_EXT_sample_locations)": [
18085 {
18086 "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-01526",
18087 "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>"
18088 },
18089 {
18090 "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-01527",
18091 "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>"
18092 },
18093 {
18094 "vuid": "VUID-VkSampleLocationsInfoEXT-sType-sType",
18095 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT</code>"
18096 },
18097 {
18098 "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-parameter",
18099 "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"
18100 },
18101 {
18102 "vuid": "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter",
18103 "text": " If <code>sampleLocationsCount</code> is not <code>0</code>, <code>pSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sampleLocationsCount</code> <code>VkSampleLocationEXT</code> structures"
18104 }
18105 ]
18106 },
18107 "vkCmdSetSampleLocationsEXT": {
18108 "(VK_EXT_sample_locations)": [
18109 {
18110 "vuid": "VUID-vkCmdSetSampleLocationsEXT-None-01528",
18111 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled"
18112 },
18113 {
18114 "vuid": "VUID-vkCmdSetSampleLocationsEXT-sampleLocationsPerPixel-01529",
18115 "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"
18116 },
18117 {
18118 "vuid": "VUID-vkCmdSetSampleLocationsEXT-variableSampleLocations-01530",
18119 "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>"
18120 },
18121 {
18122 "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter",
18123 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18124 },
18125 {
18126 "vuid": "VUID-vkCmdSetSampleLocationsEXT-pSampleLocationsInfo-parameter",
18127 "text": " <code>pSampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSampleLocationsInfoEXT</code> structure"
18128 },
18129 {
18130 "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-recording",
18131 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18132 },
18133 {
18134 "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-cmdpool",
18135 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18136 }
18137 ]
18138 },
18139 "VkPipelineViewportShadingRateImageStateCreateInfoNV": {
18140 "(VK_NV_shading_rate_image)": [
18141 {
18142 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02054",
18143 "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>"
18144 },
18145 {
18146 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02055",
18147 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
18148 },
18149 {
18150 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-shadingRateImageEnable-02056",
18151 "text": " If <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, <code>viewportCount</code> <strong class=\"purple\">must</strong> be equal to the <code>viewportCount</code> member of <code>VkPipelineViewportStateCreateInfo</code>"
18152 },
18153 {
18154 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-pDynamicStates-02057",
18155 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code>, <code>pShadingRatePalettes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> <code>VkShadingRatePaletteNV</code> structures"
18156 },
18157 {
18158 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-sType-sType",
18159 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV</code>"
18160 },
18161 {
18162 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-pShadingRatePalettes-parameter",
18163 "text": " If <code>viewportCount</code> is not <code>0</code>, and <code>pShadingRatePalettes</code> is not <code>NULL</code>, <code>pShadingRatePalettes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkShadingRatePaletteNV</code> structures"
18164 }
18165 ]
18166 },
18167 "vkCmdBindShadingRateImageNV": {
18168 "(VK_NV_shading_rate_image)": [
18169 {
18170 "vuid": "VUID-vkCmdBindShadingRateImageNV-None-02058",
18171 "text": " The <a href=\"#features-shadingRateImage\">shading rate image</a> feature <strong class=\"purple\">must</strong> be enabled."
18172 },
18173 {
18174 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02059",
18175 "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>."
18176 },
18177 {
18178 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02060",
18179 "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>."
18180 },
18181 {
18182 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02061",
18183 "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>"
18184 },
18185 {
18186 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02062",
18187 "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."
18188 },
18189 {
18190 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-02063",
18191 "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>."
18192 },
18193 {
18194 "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter",
18195 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18196 },
18197 {
18198 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-parameter",
18199 "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> handle"
18200 },
18201 {
18202 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-parameter",
18203 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
18204 },
18205 {
18206 "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-recording",
18207 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18208 },
18209 {
18210 "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-cmdpool",
18211 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18212 },
18213 {
18214 "vuid": "VUID-vkCmdBindShadingRateImageNV-commonparent",
18215 "text": " Both of <code>commandBuffer</code>, and <code>imageView</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
18216 }
18217 ]
18218 },
18219 "vkCmdSetViewportShadingRatePaletteNV": {
18220 "(VK_NV_shading_rate_image)": [
18221 {
18222 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-None-02064",
18223 "text": " The <a href=\"#features-shadingRateImage\">shading rate image</a> feature <strong class=\"purple\">must</strong> be enabled."
18224 },
18225 {
18226 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-None-02065",
18227 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled"
18228 },
18229 {
18230 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02066",
18231 "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
18232 },
18233 {
18234 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02067",
18235 "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"
18236 },
18237 {
18238 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02068",
18239 "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>"
18240 },
18241 {
18242 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-02069",
18243 "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>"
18244 },
18245 {
18246 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter",
18247 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18248 },
18249 {
18250 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-pShadingRatePalettes-parameter",
18251 "text": " <code>pShadingRatePalettes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkShadingRatePaletteNV</code> structures"
18252 },
18253 {
18254 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-recording",
18255 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18256 },
18257 {
18258 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-cmdpool",
18259 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18260 },
18261 {
18262 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-arraylength",
18263 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18264 }
18265 ]
18266 },
18267 "VkShadingRatePaletteNV": {
18268 "(VK_NV_shading_rate_image)": [
18269 {
18270 "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-02071",
18271 "text": " <code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRatePaletteSize</code>, inclusive"
18272 },
18273 {
18274 "vuid": "VUID-VkShadingRatePaletteNV-pShadingRatePaletteEntries-parameter",
18275 "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"
18276 },
18277 {
18278 "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-arraylength",
18279 "text": " <code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18280 }
18281 ]
18282 },
18283 "VkPipelineViewportCoarseSampleOrderStateCreateInfoNV": {
18284 "(VK_NV_shading_rate_image)": [
18285 {
18286 "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-02072",
18287 "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>"
18288 },
18289 {
18290 "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-02234",
18291 "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."
18292 },
18293 {
18294 "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sType-sType",
18295 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV</code>"
18296 },
18297 {
18298 "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-parameter",
18299 "text": " <code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value"
18300 },
18301 {
18302 "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-parameter",
18303 "text": " If <code>customSampleOrderCount</code> is not <code>0</code>, <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>customSampleOrderCount</code> valid <code>VkCoarseSampleOrderCustomNV</code> structures"
18304 }
18305 ]
18306 },
18307 "VkCoarseSampleOrderCustomNV": {
18308 "(VK_NV_shading_rate_image)": [
18309 {
18310 "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-02073",
18311 "text": " <code>shadingRate</code> <strong class=\"purple\">must</strong> be a shading rate that generates fragments with more than one pixel."
18312 },
18313 {
18314 "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleCount-02074",
18315 "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>."
18316 },
18317 {
18318 "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02075",
18319 "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>."
18320 },
18321 {
18322 "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02076",
18323 "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be less than or equal to the value of <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRateMaxCoarseSamples</code>."
18324 },
18325 {
18326 "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-02077",
18327 "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>."
18328 },
18329 {
18330 "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-parameter",
18331 "text": " <code>shadingRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShadingRatePaletteEntryNV\">VkShadingRatePaletteEntryNV</a> value"
18332 },
18333 {
18334 "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-parameter",
18335 "text": " <code>pSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sampleLocationCount</code> <code>VkCoarseSampleLocationNV</code> structures"
18336 },
18337 {
18338 "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-arraylength",
18339 "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18340 }
18341 ]
18342 },
18343 "VkCoarseSampleLocationNV": {
18344 "(VK_NV_shading_rate_image)": [
18345 {
18346 "vuid": "VUID-VkCoarseSampleLocationNV-pixelX-02078",
18347 "text": " <code>pixelX</code> <strong class=\"purple\">must</strong> be less than the width (in pixels) of the fragment."
18348 },
18349 {
18350 "vuid": "VUID-VkCoarseSampleLocationNV-pixelY-02079",
18351 "text": " <code>pixelY</code> <strong class=\"purple\">must</strong> be less than the height (in pixels) of the fragment."
18352 },
18353 {
18354 "vuid": "VUID-VkCoarseSampleLocationNV-sample-02080",
18355 "text": " <code>sample</code> <strong class=\"purple\">must</strong> be less than the number of coverage samples in each pixel belonging to the fragment."
18356 }
18357 ]
18358 },
18359 "vkCmdSetCoarseSampleOrderNV": {
18360 "(VK_NV_shading_rate_image)": [
18361 {
18362 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-02081",
18363 "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>"
18364 },
18365 {
18366 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-02235",
18367 "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."
18368 },
18369 {
18370 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter",
18371 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18372 },
18373 {
18374 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-parameter",
18375 "text": " <code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value"
18376 },
18377 {
18378 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-parameter",
18379 "text": " If <code>customSampleOrderCount</code> is not <code>0</code>, <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>customSampleOrderCount</code> valid <code>VkCoarseSampleOrderCustomNV</code> structures"
18380 },
18381 {
18382 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-recording",
18383 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18384 },
18385 {
18386 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-cmdpool",
18387 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18388 }
18389 ]
18390 },
18391 "VkPipelineRasterizationLineStateCreateInfoEXT": {
18392 "(VK_EXT_line_rasterization)": [
18393 {
18394 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02768",
18395 "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"
18396 },
18397 {
18398 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02769",
18399 "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"
18400 },
18401 {
18402 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02770",
18403 "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"
18404 },
18405 {
18406 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02771",
18407 "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"
18408 },
18409 {
18410 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02772",
18411 "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"
18412 },
18413 {
18414 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02773",
18415 "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"
18416 },
18417 {
18418 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02774",
18419 "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>"
18420 },
18421 {
18422 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-sType-sType",
18423 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT</code>"
18424 },
18425 {
18426 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-parameter",
18427 "text": " <code>lineRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkLineRasterizationModeEXT\">VkLineRasterizationModeEXT</a> value"
18428 }
18429 ]
18430 },
18431 "vkCmdSetLineWidth": {
18432 "core": [
18433 {
18434 "vuid": "VUID-vkCmdSetLineWidth-None-00787",
18435 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled"
18436 },
18437 {
18438 "vuid": "VUID-vkCmdSetLineWidth-lineWidth-00788",
18439 "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>"
18440 },
18441 {
18442 "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-parameter",
18443 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18444 },
18445 {
18446 "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-recording",
18447 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18448 },
18449 {
18450 "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-cmdpool",
18451 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18452 }
18453 ]
18454 },
18455 "vkCmdSetLineStippleEXT": {
18456 "(VK_EXT_line_rasterization)": [
18457 {
18458 "vuid": "VUID-vkCmdSetLineStippleEXT-None-02775",
18459 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_LINE_STIPPLE_EXT</code> dynamic state enabled"
18460 },
18461 {
18462 "vuid": "VUID-vkCmdSetLineStippleEXT-lineStippleFactor-02776",
18463 "text": " <code>lineStippleFactor</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[1,256]</span>"
18464 },
18465 {
18466 "vuid": "VUID-vkCmdSetLineStippleEXT-commandBuffer-parameter",
18467 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18468 },
18469 {
18470 "vuid": "VUID-vkCmdSetLineStippleEXT-commandBuffer-recording",
18471 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18472 },
18473 {
18474 "vuid": "VUID-vkCmdSetLineStippleEXT-commandBuffer-cmdpool",
18475 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18476 }
18477 ]
18478 },
18479 "vkCmdSetDepthBias": {
18480 "core": [
18481 {
18482 "vuid": "VUID-vkCmdSetDepthBias-None-00789",
18483 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled"
18484 },
18485 {
18486 "vuid": "VUID-vkCmdSetDepthBias-depthBiasClamp-00790",
18487 "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>"
18488 },
18489 {
18490 "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-parameter",
18491 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18492 },
18493 {
18494 "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-recording",
18495 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18496 },
18497 {
18498 "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-cmdpool",
18499 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18500 }
18501 ]
18502 },
18503 "VkPipelineRasterizationConservativeStateCreateInfoEXT": {
18504 "(VK_EXT_conservative_rasterization)": [
18505 {
18506 "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-extraPrimitiveOverestimationSize-01769",
18507 "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"
18508 },
18509 {
18510 "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-sType-sType",
18511 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT</code>"
18512 },
18513 {
18514 "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-flags-zerobitmask",
18515 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
18516 },
18517 {
18518 "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-conservativeRasterizationMode-parameter",
18519 "text": " <code>conservativeRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkConservativeRasterizationModeEXT\">VkConservativeRasterizationModeEXT</a> value"
18520 }
18521 ]
18522 },
18523 "VkPipelineDiscardRectangleStateCreateInfoEXT": {
18524 "(VK_EXT_discard_rectangles)": [
18525 {
18526 "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleCount-00582",
18527 "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>VkPhysicalDeviceDiscardRectanglePropertiesEXT</code>::<code>maxDiscardRectangles</code>, inclusive"
18528 },
18529 {
18530 "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-sType-sType",
18531 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT</code>"
18532 },
18533 {
18534 "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-flags-zerobitmask",
18535 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
18536 },
18537 {
18538 "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleMode-parameter",
18539 "text": " <code>discardRectangleMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDiscardRectangleModeEXT\">VkDiscardRectangleModeEXT</a> value"
18540 }
18541 ]
18542 },
18543 "vkCmdSetDiscardRectangleEXT": {
18544 "(VK_EXT_discard_rectangles)": [
18545 {
18546 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-None-00583",
18547 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled"
18548 },
18549 {
18550 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-firstDiscardRectangle-00585",
18551 "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>"
18552 },
18553 {
18554 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-x-00587",
18555 "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>"
18556 },
18557 {
18558 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00588",
18559 "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"
18560 },
18561 {
18562 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00589",
18563 "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"
18564 },
18565 {
18566 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter",
18567 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18568 },
18569 {
18570 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-pDiscardRectangles-parameter",
18571 "text": " <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>discardRectangleCount</code> <code>VkRect2D</code> structures"
18572 },
18573 {
18574 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-recording",
18575 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18576 },
18577 {
18578 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-cmdpool",
18579 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18580 },
18581 {
18582 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-discardRectangleCount-arraylength",
18583 "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18584 }
18585 ]
18586 },
18587 "vkCmdSetScissor": {
18588 "core": [
18589 {
18590 "vuid": "VUID-vkCmdSetScissor-None-00590",
18591 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled"
18592 },
18593 {
18594 "vuid": "VUID-vkCmdSetScissor-firstScissor-00591",
18595 "text": " <code>firstScissor</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
18596 },
18597 {
18598 "vuid": "VUID-vkCmdSetScissor-firstScissor-00592",
18599 "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"
18600 },
18601 {
18602 "vuid": "VUID-vkCmdSetScissor-firstScissor-00593",
18603 "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>"
18604 },
18605 {
18606 "vuid": "VUID-vkCmdSetScissor-scissorCount-00594",
18607 "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>"
18608 },
18609 {
18610 "vuid": "VUID-vkCmdSetScissor-x-00595",
18611 "text": " The <code>x</code> and <code>y</code> members of <code>offset</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>"
18612 },
18613 {
18614 "vuid": "VUID-vkCmdSetScissor-offset-00596",
18615 "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"
18616 },
18617 {
18618 "vuid": "VUID-vkCmdSetScissor-offset-00597",
18619 "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"
18620 },
18621 {
18622 "vuid": "VUID-vkCmdSetScissor-commandBuffer-parameter",
18623 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18624 },
18625 {
18626 "vuid": "VUID-vkCmdSetScissor-pScissors-parameter",
18627 "text": " <code>pScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>scissorCount</code> <code>VkRect2D</code> structures"
18628 },
18629 {
18630 "vuid": "VUID-vkCmdSetScissor-commandBuffer-recording",
18631 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18632 },
18633 {
18634 "vuid": "VUID-vkCmdSetScissor-commandBuffer-cmdpool",
18635 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18636 },
18637 {
18638 "vuid": "VUID-vkCmdSetScissor-scissorCount-arraylength",
18639 "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18640 }
18641 ]
18642 },
18643 "VkPipelineViewportExclusiveScissorStateCreateInfoNV": {
18644 "(VK_NV_scissor_exclusive)": [
18645 {
18646 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027",
18647 "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>"
18648 },
18649 {
18650 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028",
18651 "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
18652 },
18653 {
18654 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02029",
18655 "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or identical to the <code>viewportCount</code> member of <code>VkPipelineViewportStateCreateInfo</code>"
18656 },
18657 {
18658 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-pDynamicStates-02030",
18659 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> and <code>exclusiveScissorCount</code> is not <code>0</code>, <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <code>VkRect2D</code> structures"
18660 },
18661 {
18662 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType",
18663 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV</code>"
18664 },
18665 {
18666 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-pExclusiveScissors-parameter",
18667 "text": " If <code>exclusiveScissorCount</code> is not <code>0</code>, and <code>pExclusiveScissors</code> is not <code>NULL</code>, <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <code>VkRect2D</code> structures"
18668 }
18669 ]
18670 },
18671 "vkCmdSetExclusiveScissorNV": {
18672 "(VK_NV_scissor_exclusive)": [
18673 {
18674 "vuid": "VUID-vkCmdSetExclusiveScissorNV-None-02031",
18675 "text": " The <a href=\"#features-exclusiveScissor\">exclusive scissor</a> feature <strong class=\"purple\">must</strong> be enabled."
18676 },
18677 {
18678 "vuid": "VUID-vkCmdSetExclusiveScissorNV-None-02032",
18679 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled"
18680 },
18681 {
18682 "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02033",
18683 "text": " <code>firstExclusiveScissor</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
18684 },
18685 {
18686 "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02034",
18687 "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"
18688 },
18689 {
18690 "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02035",
18691 "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>"
18692 },
18693 {
18694 "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-02036",
18695 "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>"
18696 },
18697 {
18698 "vuid": "VUID-vkCmdSetExclusiveScissorNV-x-02037",
18699 "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>"
18700 },
18701 {
18702 "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02038",
18703 "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"
18704 },
18705 {
18706 "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02039",
18707 "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"
18708 },
18709 {
18710 "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter",
18711 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18712 },
18713 {
18714 "vuid": "VUID-vkCmdSetExclusiveScissorNV-pExclusiveScissors-parameter",
18715 "text": " <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <code>VkRect2D</code> structures"
18716 },
18717 {
18718 "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-recording",
18719 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18720 },
18721 {
18722 "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-cmdpool",
18723 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18724 },
18725 {
18726 "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-arraylength",
18727 "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
18728 }
18729 ]
18730 },
18731 "VkPipelineDepthStencilStateCreateInfo": {
18732 "core": [
18733 {
18734 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598",
18735 "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>"
18736 },
18737 {
18738 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType",
18739 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO</code>"
18740 },
18741 {
18742 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext",
18743 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
18744 },
18745 {
18746 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-flags-zerobitmask",
18747 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
18748 },
18749 {
18750 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthCompareOp-parameter",
18751 "text": " <code>depthCompareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
18752 },
18753 {
18754 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-front-parameter",
18755 "text": " <code>front</code> <strong class=\"purple\">must</strong> be a valid <code>VkStencilOpState</code> structure"
18756 },
18757 {
18758 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-back-parameter",
18759 "text": " <code>back</code> <strong class=\"purple\">must</strong> be a valid <code>VkStencilOpState</code> structure"
18760 }
18761 ]
18762 },
18763 "vkCmdSetDepthBounds": {
18764 "core": [
18765 {
18766 "vuid": "VUID-vkCmdSetDepthBounds-None-00599",
18767 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled"
18768 },
18769 {
18770 "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-parameter",
18771 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18772 },
18773 {
18774 "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-recording",
18775 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18776 },
18777 {
18778 "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-cmdpool",
18779 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18780 }
18781 ],
18782 "(VK_EXT_depth_range_unrestricted)": [
18783 {
18784 "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-00600",
18785 "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"
18786 },
18787 {
18788 "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-00601",
18789 "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"
18790 }
18791 ],
18792 "!(VK_EXT_depth_range_unrestricted)": [
18793 {
18794 "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-02508",
18795 "text": " <code>minDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
18796 },
18797 {
18798 "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-02509",
18799 "text": " <code>maxDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
18800 }
18801 ]
18802 },
18803 "VkStencilOpState": {
18804 "core": [
18805 {
18806 "vuid": "VUID-VkStencilOpState-failOp-parameter",
18807 "text": " <code>failOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
18808 },
18809 {
18810 "vuid": "VUID-VkStencilOpState-passOp-parameter",
18811 "text": " <code>passOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
18812 },
18813 {
18814 "vuid": "VUID-VkStencilOpState-depthFailOp-parameter",
18815 "text": " <code>depthFailOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
18816 },
18817 {
18818 "vuid": "VUID-VkStencilOpState-compareOp-parameter",
18819 "text": " <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
18820 }
18821 ]
18822 },
18823 "vkCmdSetStencilCompareMask": {
18824 "core": [
18825 {
18826 "vuid": "VUID-vkCmdSetStencilCompareMask-None-00602",
18827 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled"
18828 },
18829 {
18830 "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter",
18831 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18832 },
18833 {
18834 "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-parameter",
18835 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
18836 },
18837 {
18838 "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask",
18839 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18840 },
18841 {
18842 "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-recording",
18843 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18844 },
18845 {
18846 "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-cmdpool",
18847 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18848 }
18849 ]
18850 },
18851 "vkCmdSetStencilWriteMask": {
18852 "core": [
18853 {
18854 "vuid": "VUID-vkCmdSetStencilWriteMask-None-00603",
18855 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled"
18856 },
18857 {
18858 "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter",
18859 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18860 },
18861 {
18862 "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-parameter",
18863 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
18864 },
18865 {
18866 "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask",
18867 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18868 },
18869 {
18870 "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-recording",
18871 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18872 },
18873 {
18874 "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-cmdpool",
18875 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18876 }
18877 ]
18878 },
18879 "vkCmdSetStencilReference": {
18880 "core": [
18881 {
18882 "vuid": "VUID-vkCmdSetStencilReference-None-00604",
18883 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled"
18884 },
18885 {
18886 "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-parameter",
18887 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
18888 },
18889 {
18890 "vuid": "VUID-vkCmdSetStencilReference-faceMask-parameter",
18891 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
18892 },
18893 {
18894 "vuid": "VUID-vkCmdSetStencilReference-faceMask-requiredbitmask",
18895 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
18896 },
18897 {
18898 "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-recording",
18899 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
18900 },
18901 {
18902 "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-cmdpool",
18903 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
18904 }
18905 ]
18906 },
18907 "VkPipelineRepresentativeFragmentTestStateCreateInfoNV": {
18908 "(VK_NV_representative_fragment_test)": [
18909 {
18910 "vuid": "VUID-VkPipelineRepresentativeFragmentTestStateCreateInfoNV-sType-sType",
18911 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV</code>"
18912 }
18913 ]
18914 },
18915 "VkPipelineCoverageToColorStateCreateInfoNV": {
18916 "(VK_NV_fragment_coverage_to_color)": [
18917 {
18918 "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-coverageToColorEnable-01404",
18919 "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>"
18920 },
18921 {
18922 "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-sType-sType",
18923 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV</code>"
18924 },
18925 {
18926 "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-flags-zerobitmask",
18927 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
18928 }
18929 ]
18930 },
18931 "VkPipelineCoverageReductionStateCreateInfoNV": {
18932 "(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [
18933 {
18934 "vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-sType-sType",
18935 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV</code>"
18936 },
18937 {
18938 "vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-flags-zerobitmask",
18939 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
18940 },
18941 {
18942 "vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-coverageReductionMode-parameter",
18943 "text": " <code>coverageReductionMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageReductionModeNV\">VkCoverageReductionModeNV</a> value"
18944 }
18945 ]
18946 },
18947 "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV": {
18948 "(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [
18949 {
18950 "vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-physicalDevice-parameter",
18951 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
18952 },
18953 {
18954 "vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinationCount-parameter",
18955 "text": " <code>pCombinationCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
18956 },
18957 {
18958 "vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinations-parameter",
18959 "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> <code>VkFramebufferMixedSamplesCombinationNV</code> structures"
18960 }
18961 ]
18962 },
18963 "VkFramebufferMixedSamplesCombinationNV": {
18964 "(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [
18965 {
18966 "vuid": "VUID-VkFramebufferMixedSamplesCombinationNV-sType-sType",
18967 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV</code>"
18968 },
18969 {
18970 "vuid": "VUID-VkFramebufferMixedSamplesCombinationNV-pNext-pNext",
18971 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
18972 }
18973 ]
18974 },
18975 "VkPipelineCoverageModulationStateCreateInfoNV": {
18976 "(VK_NV_framebuffer_mixed_samples)": [
18977 {
18978 "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationTableEnable-01405",
18979 "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."
18980 },
18981 {
18982 "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-sType-sType",
18983 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV</code>"
18984 },
18985 {
18986 "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-flags-zerobitmask",
18987 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
18988 },
18989 {
18990 "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationMode-parameter",
18991 "text": " <code>coverageModulationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageModulationModeNV\">VkCoverageModulationModeNV</a> value"
18992 }
18993 ]
18994 },
18995 "VkPipelineColorBlendStateCreateInfo": {
18996 "core": [
18997 {
18998 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605",
18999 "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"
19000 },
19001 {
19002 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606",
19003 "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>"
19004 },
19005 {
19006 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00607",
19007 "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"
19008 },
19009 {
19010 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-sType-sType",
19011 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO</code>"
19012 },
19013 {
19014 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext",
19015 "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>"
19016 },
19017 {
19018 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-flags-zerobitmask",
19019 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
19020 },
19021 {
19022 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter",
19023 "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkPipelineColorBlendAttachmentState</code> structures"
19024 }
19025 ]
19026 },
19027 "VkPipelineColorBlendAttachmentState": {
19028 "core": [
19029 {
19030 "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608",
19031 "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>"
19032 },
19033 {
19034 "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609",
19035 "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>"
19036 },
19037 {
19038 "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610",
19039 "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>"
19040 },
19041 {
19042 "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611",
19043 "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>"
19044 },
19045 {
19046 "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter",
19047 "text": " <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
19048 },
19049 {
19050 "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter",
19051 "text": " <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
19052 },
19053 {
19054 "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter",
19055 "text": " <code>colorBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value"
19056 },
19057 {
19058 "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter",
19059 "text": " <code>srcAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
19060 },
19061 {
19062 "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter",
19063 "text": " <code>dstAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
19064 },
19065 {
19066 "vuid": "VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter",
19067 "text": " <code>alphaBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value"
19068 },
19069 {
19070 "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter",
19071 "text": " <code>colorWriteMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkColorComponentFlagBits\">VkColorComponentFlagBits</a> values"
19072 }
19073 ],
19074 "(VK_EXT_blend_operation_advanced)": [
19075 {
19076 "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406",
19077 "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>"
19078 },
19079 {
19080 "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407",
19081 "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."
19082 },
19083 {
19084 "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01408",
19085 "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."
19086 },
19087 {
19088 "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409",
19089 "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>"
19090 },
19091 {
19092 "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410",
19093 "text": " If <code>colorBlendOp</code> or <code>alphaBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <a href=\"#VkSubpassDescription\">VkSubpassDescription</a>::<code>colorAttachmentCount</code> of the subpass this pipeline is compiled against <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::advancedBlendMaxColorAttachments"
19094 }
19095 ]
19096 },
19097 "vkCmdSetBlendConstants": {
19098 "core": [
19099 {
19100 "vuid": "VUID-vkCmdSetBlendConstants-None-00612",
19101 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled"
19102 },
19103 {
19104 "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-parameter",
19105 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
19106 },
19107 {
19108 "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-recording",
19109 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19110 },
19111 {
19112 "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-cmdpool",
19113 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
19114 }
19115 ]
19116 },
19117 "VkPipelineColorBlendAdvancedStateCreateInfoEXT": {
19118 "(VK_EXT_blend_operation_advanced)": [
19119 {
19120 "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424",
19121 "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>"
19122 },
19123 {
19124 "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425",
19125 "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>"
19126 },
19127 {
19128 "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426",
19129 "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>"
19130 },
19131 {
19132 "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-sType-sType",
19133 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT</code>"
19134 },
19135 {
19136 "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-parameter",
19137 "text": " <code>blendOverlap</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOverlapEXT\">VkBlendOverlapEXT</a> value"
19138 }
19139 ]
19140 },
19141 "vkCmdDispatch": {
19142 "core": [
19143 {
19144 "vuid": "VUID-vkCmdDispatch-None-02690",
19145 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
19146 },
19147 {
19148 "vuid": "VUID-vkCmdDispatch-None-02691",
19149 "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>"
19150 },
19151 {
19152 "vuid": "VUID-vkCmdDispatch-None-02697",
19153 "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>"
19154 },
19155 {
19156 "vuid": "VUID-vkCmdDispatch-None-02698",
19157 "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>"
19158 },
19159 {
19160 "vuid": "VUID-vkCmdDispatch-None-02699",
19161 "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"
19162 },
19163 {
19164 "vuid": "VUID-vkCmdDispatch-None-02700",
19165 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
19166 },
19167 {
19168 "vuid": "VUID-vkCmdDispatch-commandBuffer-02701",
19169 "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>"
19170 },
19171 {
19172 "vuid": "VUID-vkCmdDispatch-None-02702",
19173 "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"
19174 },
19175 {
19176 "vuid": "VUID-vkCmdDispatch-None-02703",
19177 "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"
19178 },
19179 {
19180 "vuid": "VUID-vkCmdDispatch-None-02704",
19181 "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"
19182 },
19183 {
19184 "vuid": "VUID-vkCmdDispatch-None-02705",
19185 "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"
19186 },
19187 {
19188 "vuid": "VUID-vkCmdDispatch-None-02706",
19189 "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"
19190 },
19191 {
19192 "vuid": "VUID-vkCmdDispatch-groupCountX-00386",
19193 "text": " <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
19194 },
19195 {
19196 "vuid": "VUID-vkCmdDispatch-groupCountY-00387",
19197 "text": " <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
19198 },
19199 {
19200 "vuid": "VUID-vkCmdDispatch-groupCountZ-00388",
19201 "text": " <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
19202 },
19203 {
19204 "vuid": "VUID-vkCmdDispatch-commandBuffer-parameter",
19205 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
19206 },
19207 {
19208 "vuid": "VUID-vkCmdDispatch-commandBuffer-recording",
19209 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19210 },
19211 {
19212 "vuid": "VUID-vkCmdDispatch-commandBuffer-cmdpool",
19213 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
19214 },
19215 {
19216 "vuid": "VUID-vkCmdDispatch-renderpass",
19217 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
19218 }
19219 ],
19220 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
19221 {
19222 "vuid": "VUID-vkCmdDispatch-None-02692",
19223 "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>"
19224 }
19225 ],
19226 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
19227 {
19228 "vuid": "VUID-vkCmdDispatch-None-02693",
19229 "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>"
19230 }
19231 ],
19232 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
19233 {
19234 "vuid": "VUID-vkCmdDispatch-filterCubic-02694",
19235 "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>"
19236 },
19237 {
19238 "vuid": "VUID-vkCmdDispatch-filterCubicMinmax-02695",
19239 "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_EXT</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX_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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
19240 }
19241 ],
19242 "(VK_NV_corner_sampled_image)": [
19243 {
19244 "vuid": "VUID-vkCmdDispatch-flags-02696",
19245 "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>."
19246 }
19247 ],
19248 "(VK_VERSION_1_1)": [
19249 {
19250 "vuid": "VUID-vkCmdDispatch-commandBuffer-02707",
19251 "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"
19252 },
19253 {
19254 "vuid": "VUID-vkCmdDispatch-commandBuffer-02712",
19255 "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"
19256 },
19257 {
19258 "vuid": "VUID-vkCmdDispatch-commandBuffer-02713",
19259 "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"
19260 }
19261 ]
19262 },
19263 "vkCmdDispatchIndirect": {
19264 "core": [
19265 {
19266 "vuid": "VUID-vkCmdDispatchIndirect-None-02690",
19267 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
19268 },
19269 {
19270 "vuid": "VUID-vkCmdDispatchIndirect-None-02691",
19271 "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>"
19272 },
19273 {
19274 "vuid": "VUID-vkCmdDispatchIndirect-None-02697",
19275 "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>"
19276 },
19277 {
19278 "vuid": "VUID-vkCmdDispatchIndirect-None-02698",
19279 "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>"
19280 },
19281 {
19282 "vuid": "VUID-vkCmdDispatchIndirect-None-02699",
19283 "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"
19284 },
19285 {
19286 "vuid": "VUID-vkCmdDispatchIndirect-None-02700",
19287 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
19288 },
19289 {
19290 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02701",
19291 "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>"
19292 },
19293 {
19294 "vuid": "VUID-vkCmdDispatchIndirect-None-02702",
19295 "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"
19296 },
19297 {
19298 "vuid": "VUID-vkCmdDispatchIndirect-None-02703",
19299 "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"
19300 },
19301 {
19302 "vuid": "VUID-vkCmdDispatchIndirect-None-02704",
19303 "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"
19304 },
19305 {
19306 "vuid": "VUID-vkCmdDispatchIndirect-None-02705",
19307 "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"
19308 },
19309 {
19310 "vuid": "VUID-vkCmdDispatchIndirect-None-02706",
19311 "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"
19312 },
19313 {
19314 "vuid": "VUID-vkCmdDispatchIndirect-buffer-02708",
19315 "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"
19316 },
19317 {
19318 "vuid": "VUID-vkCmdDispatchIndirect-buffer-02709",
19319 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
19320 },
19321 {
19322 "vuid": "VUID-vkCmdDispatchIndirect-offset-02710",
19323 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
19324 },
19325 {
19326 "vuid": "VUID-vkCmdDispatchIndirect-offset-00407",
19327 "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>"
19328 },
19329 {
19330 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-parameter",
19331 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
19332 },
19333 {
19334 "vuid": "VUID-vkCmdDispatchIndirect-buffer-parameter",
19335 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
19336 },
19337 {
19338 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-recording",
19339 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19340 },
19341 {
19342 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-cmdpool",
19343 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
19344 },
19345 {
19346 "vuid": "VUID-vkCmdDispatchIndirect-renderpass",
19347 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
19348 },
19349 {
19350 "vuid": "VUID-vkCmdDispatchIndirect-commonparent",
19351 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
19352 }
19353 ],
19354 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
19355 {
19356 "vuid": "VUID-vkCmdDispatchIndirect-None-02692",
19357 "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>"
19358 }
19359 ],
19360 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
19361 {
19362 "vuid": "VUID-vkCmdDispatchIndirect-None-02693",
19363 "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>"
19364 }
19365 ],
19366 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
19367 {
19368 "vuid": "VUID-vkCmdDispatchIndirect-filterCubic-02694",
19369 "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>"
19370 },
19371 {
19372 "vuid": "VUID-vkCmdDispatchIndirect-filterCubicMinmax-02695",
19373 "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_EXT</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX_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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
19374 }
19375 ],
19376 "(VK_NV_corner_sampled_image)": [
19377 {
19378 "vuid": "VUID-vkCmdDispatchIndirect-flags-02696",
19379 "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>."
19380 }
19381 ],
19382 "(VK_VERSION_1_1)": [
19383 {
19384 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02707",
19385 "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"
19386 },
19387 {
19388 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02711",
19389 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
19390 }
19391 ]
19392 },
19393 "VkDispatchIndirectCommand": {
19394 "core": [
19395 {
19396 "vuid": "VUID-VkDispatchIndirectCommand-x-00417",
19397 "text": " <code>x</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
19398 },
19399 {
19400 "vuid": "VUID-VkDispatchIndirectCommand-y-00418",
19401 "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
19402 },
19403 {
19404 "vuid": "VUID-VkDispatchIndirectCommand-z-00419",
19405 "text": " <code>z</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
19406 }
19407 ]
19408 },
19409 "vkCmdDispatchBase": {
19410 "(VK_VERSION_1_1,VK_KHR_device_group)": [
19411 {
19412 "vuid": "VUID-vkCmdDispatchBase-None-02690",
19413 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
19414 },
19415 {
19416 "vuid": "VUID-vkCmdDispatchBase-None-02691",
19417 "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>"
19418 },
19419 {
19420 "vuid": "VUID-vkCmdDispatchBase-None-02697",
19421 "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>"
19422 },
19423 {
19424 "vuid": "VUID-vkCmdDispatchBase-None-02698",
19425 "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>"
19426 },
19427 {
19428 "vuid": "VUID-vkCmdDispatchBase-None-02699",
19429 "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"
19430 },
19431 {
19432 "vuid": "VUID-vkCmdDispatchBase-None-02700",
19433 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
19434 },
19435 {
19436 "vuid": "VUID-vkCmdDispatchBase-commandBuffer-02701",
19437 "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>"
19438 },
19439 {
19440 "vuid": "VUID-vkCmdDispatchBase-None-02702",
19441 "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"
19442 },
19443 {
19444 "vuid": "VUID-vkCmdDispatchBase-None-02703",
19445 "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"
19446 },
19447 {
19448 "vuid": "VUID-vkCmdDispatchBase-None-02704",
19449 "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"
19450 },
19451 {
19452 "vuid": "VUID-vkCmdDispatchBase-None-02705",
19453 "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"
19454 },
19455 {
19456 "vuid": "VUID-vkCmdDispatchBase-None-02706",
19457 "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"
19458 },
19459 {
19460 "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00421",
19461 "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
19462 },
19463 {
19464 "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00422",
19465 "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
19466 },
19467 {
19468 "vuid": "VUID-vkCmdDispatchBase-baseGroupZ-00423",
19469 "text": " <code>baseGroupZ</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
19470 },
19471 {
19472 "vuid": "VUID-vkCmdDispatchBase-groupCountX-00424",
19473 "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>"
19474 },
19475 {
19476 "vuid": "VUID-vkCmdDispatchBase-groupCountY-00425",
19477 "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>"
19478 },
19479 {
19480 "vuid": "VUID-vkCmdDispatchBase-groupCountZ-00426",
19481 "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>"
19482 },
19483 {
19484 "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00427",
19485 "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."
19486 },
19487 {
19488 "vuid": "VUID-vkCmdDispatchBase-commandBuffer-parameter",
19489 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
19490 },
19491 {
19492 "vuid": "VUID-vkCmdDispatchBase-commandBuffer-recording",
19493 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
19494 },
19495 {
19496 "vuid": "VUID-vkCmdDispatchBase-commandBuffer-cmdpool",
19497 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
19498 },
19499 {
19500 "vuid": "VUID-vkCmdDispatchBase-renderpass",
19501 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
19502 }
19503 ],
19504 "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
19505 {
19506 "vuid": "VUID-vkCmdDispatchBase-None-02692",
19507 "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>"
19508 }
19509 ],
19510 "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
19511 {
19512 "vuid": "VUID-vkCmdDispatchBase-None-02693",
19513 "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>"
19514 }
19515 ],
19516 "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
19517 {
19518 "vuid": "VUID-vkCmdDispatchBase-filterCubic-02694",
19519 "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>"
19520 },
19521 {
19522 "vuid": "VUID-vkCmdDispatchBase-filterCubicMinmax-02695",
19523 "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_EXT</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX_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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
19524 }
19525 ],
19526 "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_NV_corner_sampled_image)": [
19527 {
19528 "vuid": "VUID-vkCmdDispatchBase-flags-02696",
19529 "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>."
19530 }
19531 ],
19532 "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_VERSION_1_1)": [
19533 {
19534 "vuid": "VUID-vkCmdDispatchBase-commandBuffer-02707",
19535 "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"
19536 }
19537 ]
19538 },
19539 "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX": {
19540 "(VK_NVX_device_generated_commands)": [
19541 {
19542 "vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-physicalDevice-parameter",
19543 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
19544 },
19545 {
19546 "vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-pFeatures-parameter",
19547 "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceGeneratedCommandsFeaturesNVX</code> structure"
19548 },
19549 {
19550 "vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-pLimits-parameter",
19551 "text": " <code>pLimits</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceGeneratedCommandsLimitsNVX</code> structure"
19552 }
19553 ]
19554 },
19555 "VkDeviceGeneratedCommandsFeaturesNVX": {
19556 "(VK_NVX_device_generated_commands)": [
19557 {
19558 "vuid": "VUID-VkDeviceGeneratedCommandsFeaturesNVX-sType-sType",
19559 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX</code>"
19560 },
19561 {
19562 "vuid": "VUID-VkDeviceGeneratedCommandsFeaturesNVX-pNext-pNext",
19563 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19564 }
19565 ]
19566 },
19567 "VkDeviceGeneratedCommandsLimitsNVX": {
19568 "(VK_NVX_device_generated_commands)": [
19569 {
19570 "vuid": "VUID-VkDeviceGeneratedCommandsLimitsNVX-sType-sType",
19571 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX</code>"
19572 },
19573 {
19574 "vuid": "VUID-VkDeviceGeneratedCommandsLimitsNVX-pNext-pNext",
19575 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19576 }
19577 ]
19578 },
19579 "vkCreateObjectTableNVX": {
19580 "(VK_NVX_device_generated_commands)": [
19581 {
19582 "vuid": "VUID-vkCreateObjectTableNVX-device-parameter",
19583 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
19584 },
19585 {
19586 "vuid": "VUID-vkCreateObjectTableNVX-pCreateInfo-parameter",
19587 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkObjectTableCreateInfoNVX</code> structure"
19588 },
19589 {
19590 "vuid": "VUID-vkCreateObjectTableNVX-pAllocator-parameter",
19591 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
19592 },
19593 {
19594 "vuid": "VUID-vkCreateObjectTableNVX-pObjectTable-parameter",
19595 "text": " <code>pObjectTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkObjectTableNVX</code> handle"
19596 }
19597 ]
19598 },
19599 "VkObjectTableCreateInfoNVX": {
19600 "(VK_NVX_device_generated_commands)": [
19601 {
19602 "vuid": "VUID-VkObjectTableCreateInfoNVX-computeBindingPointSupport-01355",
19603 "text": " If the <code>VkDeviceGeneratedCommandsFeaturesNVX</code>::<code>computeBindingPointSupport</code> feature is not enabled, <code>pObjectEntryUsageFlags</code> <strong class=\"purple\">must</strong> not contain <code>VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX</code>"
19604 },
19605 {
19606 "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryCounts-01356",
19607 "text": " Any value within <code>pObjectEntryCounts</code> <strong class=\"purple\">must</strong> not exceed <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>maxObjectEntryCounts</code>"
19608 },
19609 {
19610 "vuid": "VUID-VkObjectTableCreateInfoNVX-maxUniformBuffersPerDescriptor-01357",
19611 "text": " <code>maxUniformBuffersPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
19612 },
19613 {
19614 "vuid": "VUID-VkObjectTableCreateInfoNVX-maxStorageBuffersPerDescriptor-01358",
19615 "text": " <code>maxStorageBuffersPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
19616 },
19617 {
19618 "vuid": "VUID-VkObjectTableCreateInfoNVX-maxStorageImagesPerDescriptor-01359",
19619 "text": " <code>maxStorageImagesPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
19620 },
19621 {
19622 "vuid": "VUID-VkObjectTableCreateInfoNVX-maxSampledImagesPerDescriptor-01360",
19623 "text": " <code>maxSampledImagesPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
19624 },
19625 {
19626 "vuid": "VUID-VkObjectTableCreateInfoNVX-sType-sType",
19627 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX</code>"
19628 },
19629 {
19630 "vuid": "VUID-VkObjectTableCreateInfoNVX-pNext-pNext",
19631 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
19632 },
19633 {
19634 "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryTypes-parameter",
19635 "text": " <code>pObjectEntryTypes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> values"
19636 },
19637 {
19638 "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryCounts-parameter",
19639 "text": " <code>pObjectEntryCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> <code>uint32_t</code> values"
19640 },
19641 {
19642 "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryUsageFlags-parameter",
19643 "text": " <code>pObjectEntryUsageFlags</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid combinations of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
19644 },
19645 {
19646 "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryUsageFlags-requiredbitmask",
19647 "text": " Each element of <code>pObjectEntryUsageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
19648 },
19649 {
19650 "vuid": "VUID-VkObjectTableCreateInfoNVX-objectCount-arraylength",
19651 "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
19652 }
19653 ]
19654 },
19655 "vkDestroyObjectTableNVX": {
19656 "(VK_NVX_device_generated_commands)": [
19657 {
19658 "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01361",
19659 "text": " All submitted commands that refer to <code>objectTable</code> <strong class=\"purple\">must</strong> have completed execution."
19660 },
19661 {
19662 "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01362",
19663 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here."
19664 },
19665 {
19666 "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01363",
19667 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>."
19668 },
19669 {
19670 "vuid": "VUID-vkDestroyObjectTableNVX-device-parameter",
19671 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
19672 },
19673 {
19674 "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-parameter",
19675 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
19676 },
19677 {
19678 "vuid": "VUID-vkDestroyObjectTableNVX-pAllocator-parameter",
19679 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
19680 },
19681 {
19682 "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-parent",
19683 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
19684 }
19685 ]
19686 },
19687 "vkRegisterObjectsNVX": {
19688 "(VK_NVX_device_generated_commands)": [
19689 {
19690 "vuid": "VUID-vkRegisterObjectsNVX-pObjectTableEntry-01364",
19691 "text": " The contents of <code>pObjectTableEntry</code> <strong class=\"purple\">must</strong> yield plausible bindings supported by the device."
19692 },
19693 {
19694 "vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-01365",
19695 "text": " At any <code>pObjectIndices</code> there <strong class=\"purple\">must</strong> not be a registered resource already."
19696 },
19697 {
19698 "vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-01366",
19699 "text": " Any value inside <code>pObjectIndices</code> <strong class=\"purple\">must</strong> be below the appropriate <code>VkObjectTableCreateInfoNVX</code>::<code>pObjectEntryCounts</code> limits provided at <code>objectTable</code> creation time."
19700 },
19701 {
19702 "vuid": "VUID-vkRegisterObjectsNVX-device-parameter",
19703 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
19704 },
19705 {
19706 "vuid": "VUID-vkRegisterObjectsNVX-objectTable-parameter",
19707 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
19708 },
19709 {
19710 "vuid": "VUID-vkRegisterObjectsNVX-ppObjectTableEntries-parameter",
19711 "text": " <code>ppObjectTableEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <code>VkObjectTableEntryNVX</code> structures"
19712 },
19713 {
19714 "vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-parameter",
19715 "text": " <code>pObjectIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> <code>uint32_t</code> values"
19716 },
19717 {
19718 "vuid": "VUID-vkRegisterObjectsNVX-objectCount-arraylength",
19719 "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
19720 },
19721 {
19722 "vuid": "VUID-vkRegisterObjectsNVX-objectTable-parent",
19723 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
19724 }
19725 ]
19726 },
19727 "VkObjectTableEntryNVX": {
19728 "(VK_NVX_device_generated_commands)": [
19729 {
19730 "vuid": "VUID-VkObjectTableEntryNVX-computeBindingPointSupport-01367",
19731 "text": " If the <code>VkDeviceGeneratedCommandsFeaturesNVX</code>::<code>computeBindingPointSupport</code> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX</code>"
19732 },
19733 {
19734 "vuid": "VUID-VkObjectTableEntryNVX-type-parameter",
19735 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
19736 },
19737 {
19738 "vuid": "VUID-VkObjectTableEntryNVX-flags-parameter",
19739 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
19740 },
19741 {
19742 "vuid": "VUID-VkObjectTableEntryNVX-flags-requiredbitmask",
19743 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
19744 }
19745 ]
19746 },
19747 "VkObjectTablePipelineEntryNVX": {
19748 "(VK_NVX_device_generated_commands)": [
19749 {
19750 "vuid": "VUID-VkObjectTablePipelineEntryNVX-type-01368",
19751 "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX</code>"
19752 },
19753 {
19754 "vuid": "VUID-VkObjectTablePipelineEntryNVX-type-parameter",
19755 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
19756 },
19757 {
19758 "vuid": "VUID-VkObjectTablePipelineEntryNVX-flags-parameter",
19759 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
19760 },
19761 {
19762 "vuid": "VUID-VkObjectTablePipelineEntryNVX-flags-requiredbitmask",
19763 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
19764 },
19765 {
19766 "vuid": "VUID-VkObjectTablePipelineEntryNVX-pipeline-parameter",
19767 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
19768 }
19769 ]
19770 },
19771 "VkObjectTableDescriptorSetEntryNVX": {
19772 "(VK_NVX_device_generated_commands)": [
19773 {
19774 "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-type-01369",
19775 "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX</code>"
19776 },
19777 {
19778 "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-type-parameter",
19779 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
19780 },
19781 {
19782 "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-flags-parameter",
19783 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
19784 },
19785 {
19786 "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-flags-requiredbitmask",
19787 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
19788 },
19789 {
19790 "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-pipelineLayout-parameter",
19791 "text": " <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
19792 },
19793 {
19794 "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-descriptorSet-parameter",
19795 "text": " <code>descriptorSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
19796 },
19797 {
19798 "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-commonparent",
19799 "text": " Both of <code>descriptorSet</code>, and <code>pipelineLayout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
19800 }
19801 ]
19802 },
19803 "VkObjectTableVertexBufferEntryNVX": {
19804 "(VK_NVX_device_generated_commands)": [
19805 {
19806 "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-type-01370",
19807 "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX</code>"
19808 },
19809 {
19810 "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-type-parameter",
19811 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
19812 },
19813 {
19814 "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-flags-parameter",
19815 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
19816 },
19817 {
19818 "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-flags-requiredbitmask",
19819 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
19820 },
19821 {
19822 "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-buffer-parameter",
19823 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
19824 }
19825 ]
19826 },
19827 "VkObjectTableIndexBufferEntryNVX": {
19828 "(VK_NVX_device_generated_commands)": [
19829 {
19830 "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-type-01371",
19831 "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX</code>"
19832 },
19833 {
19834 "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-indexType-02783",
19835 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be <code>VK_INDEX_TYPE_UINT16</code>, or <code>VK_INDEX_TYPE_UINT32</code>"
19836 },
19837 {
19838 "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-type-parameter",
19839 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
19840 },
19841 {
19842 "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-flags-parameter",
19843 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
19844 },
19845 {
19846 "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-flags-requiredbitmask",
19847 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
19848 },
19849 {
19850 "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-buffer-parameter",
19851 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
19852 },
19853 {
19854 "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-indexType-parameter",
19855 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
19856 }
19857 ]
19858 },
19859 "VkObjectTablePushConstantEntryNVX": {
19860 "(VK_NVX_device_generated_commands)": [
19861 {
19862 "vuid": "VUID-VkObjectTablePushConstantEntryNVX-type-01372",
19863 "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX</code>"
19864 },
19865 {
19866 "vuid": "VUID-VkObjectTablePushConstantEntryNVX-type-parameter",
19867 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
19868 },
19869 {
19870 "vuid": "VUID-VkObjectTablePushConstantEntryNVX-flags-parameter",
19871 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
19872 },
19873 {
19874 "vuid": "VUID-VkObjectTablePushConstantEntryNVX-flags-requiredbitmask",
19875 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
19876 },
19877 {
19878 "vuid": "VUID-VkObjectTablePushConstantEntryNVX-pipelineLayout-parameter",
19879 "text": " <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
19880 },
19881 {
19882 "vuid": "VUID-VkObjectTablePushConstantEntryNVX-stageFlags-parameter",
19883 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
19884 },
19885 {
19886 "vuid": "VUID-VkObjectTablePushConstantEntryNVX-stageFlags-requiredbitmask",
19887 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
19888 }
19889 ]
19890 },
19891 "vkUnregisterObjectsNVX": {
19892 "(VK_NVX_device_generated_commands)": [
19893 {
19894 "vuid": "VUID-vkUnregisterObjectsNVX-pObjectIndices-01373",
19895 "text": " At any <code>pObjectIndices</code> there <strong class=\"purple\">must</strong> be a registered resource already."
19896 },
19897 {
19898 "vuid": "VUID-vkUnregisterObjectsNVX-pObjectEntryTypes-01374",
19899 "text": " The <code>pObjectEntryTypes</code> of the resource at <code>pObjectIndices</code> <strong class=\"purple\">must</strong> match."
19900 },
19901 {
19902 "vuid": "VUID-vkUnregisterObjectsNVX-None-01375",
19903 "text": " All operations on the device using the registered resource <strong class=\"purple\">must</strong> have been completed."
19904 },
19905 {
19906 "vuid": "VUID-vkUnregisterObjectsNVX-device-parameter",
19907 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
19908 },
19909 {
19910 "vuid": "VUID-vkUnregisterObjectsNVX-objectTable-parameter",
19911 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
19912 },
19913 {
19914 "vuid": "VUID-vkUnregisterObjectsNVX-pObjectEntryTypes-parameter",
19915 "text": " <code>pObjectEntryTypes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> values"
19916 },
19917 {
19918 "vuid": "VUID-vkUnregisterObjectsNVX-pObjectIndices-parameter",
19919 "text": " <code>pObjectIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> <code>uint32_t</code> values"
19920 },
19921 {
19922 "vuid": "VUID-vkUnregisterObjectsNVX-objectCount-arraylength",
19923 "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
19924 },
19925 {
19926 "vuid": "VUID-vkUnregisterObjectsNVX-objectTable-parent",
19927 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
19928 }
19929 ]
19930 },
19931 "VkIndirectCommandsLayoutTokenNVX": {
19932 "(VK_NVX_device_generated_commands)": [
19933 {
19934 "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-bindingUnit-01342",
19935 "text": " <code>bindingUnit</code> <strong class=\"purple\">must</strong> stay within device supported limits for the appropriate commands."
19936 },
19937 {
19938 "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-dynamicCount-01343",
19939 "text": " <code>dynamicCount</code> <strong class=\"purple\">must</strong> stay within device supported limits for the appropriate commands."
19940 },
19941 {
19942 "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-divisor-01344",
19943 "text": " <code>divisor</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and a power of two."
19944 },
19945 {
19946 "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-tokenType-parameter",
19947 "text": " <code>tokenType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeNVX\">VkIndirectCommandsTokenTypeNVX</a> value"
19948 }
19949 ]
19950 },
19951 "VkIndirectCommandsTokenNVX": {
19952 "(VK_NVX_device_generated_commands)": [
19953 {
19954 "vuid": "VUID-VkIndirectCommandsTokenNVX-buffer-01345",
19955 "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."
19956 },
19957 {
19958 "vuid": "VUID-VkIndirectCommandsTokenNVX-offset-01346",
19959 "text": " The <code>offset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>minCommandsTokenBufferOffsetAlignment</code>."
19960 },
19961 {
19962 "vuid": "VUID-VkIndirectCommandsTokenNVX-tokenType-parameter",
19963 "text": " <code>tokenType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeNVX\">VkIndirectCommandsTokenTypeNVX</a> value"
19964 },
19965 {
19966 "vuid": "VUID-VkIndirectCommandsTokenNVX-buffer-parameter",
19967 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
19968 }
19969 ]
19970 },
19971 "vkCreateIndirectCommandsLayoutNVX": {
19972 "(VK_NVX_device_generated_commands)": [
19973 {
19974 "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-device-parameter",
19975 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
19976 },
19977 {
19978 "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pCreateInfo-parameter",
19979 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkIndirectCommandsLayoutCreateInfoNVX</code> structure"
19980 },
19981 {
19982 "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pAllocator-parameter",
19983 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
19984 },
19985 {
19986 "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pIndirectCommandsLayout-parameter",
19987 "text": " <code>pIndirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkIndirectCommandsLayoutNVX</code> handle"
19988 }
19989 ]
19990 },
19991 "VkIndirectCommandsLayoutCreateInfoNVX": {
19992 "(VK_NVX_device_generated_commands)": [
19993 {
19994 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-tokenCount-01347",
19995 "text": " <code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and below <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>maxIndirectCommandsLayoutTokenCount</code>"
19996 },
19997 {
19998 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-computeBindingPointSupport-01348",
19999 "text": " If the <code>VkDeviceGeneratedCommandsFeaturesNVX</code>::<code>computeBindingPointSupport</code> feature is not enabled, then <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>"
20000 },
20001 {
20002 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01349",
20003 "text": " If <code>pTokens</code> contains an entry of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX</code> it <strong class=\"purple\">must</strong> be the first element of the array and there <strong class=\"purple\">must</strong> be only a single element of such token type."
20004 },
20005 {
20006 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01350",
20007 "text": " All state binding tokens in <code>pTokens</code> <strong class=\"purple\">must</strong> occur prior work provoking tokens (<code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX</code>)."
20008 },
20009 {
20010 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01351",
20011 "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>."
20012 },
20013 {
20014 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-sType-sType",
20015 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX</code>"
20016 },
20017 {
20018 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pNext-pNext",
20019 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20020 },
20021 {
20022 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pipelineBindPoint-parameter",
20023 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
20024 },
20025 {
20026 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-flags-parameter",
20027 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkIndirectCommandsLayoutUsageFlagBitsNVX\">VkIndirectCommandsLayoutUsageFlagBitsNVX</a> values"
20028 },
20029 {
20030 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-flags-requiredbitmask",
20031 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
20032 },
20033 {
20034 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-parameter",
20035 "text": " <code>pTokens</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tokenCount</code> valid <code>VkIndirectCommandsLayoutTokenNVX</code> structures"
20036 },
20037 {
20038 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-tokenCount-arraylength",
20039 "text": " <code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20040 }
20041 ]
20042 },
20043 "vkDestroyIndirectCommandsLayoutNVX": {
20044 "(VK_NVX_device_generated_commands)": [
20045 {
20046 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-01352",
20047 "text": " All submitted commands that refer to <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have completed execution"
20048 },
20049 {
20050 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-objectTable-01353",
20051 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
20052 },
20053 {
20054 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-objectTable-01354",
20055 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20056 },
20057 {
20058 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-device-parameter",
20059 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
20060 },
20061 {
20062 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-parameter",
20063 "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkIndirectCommandsLayoutNVX</code> handle"
20064 },
20065 {
20066 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-pAllocator-parameter",
20067 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
20068 },
20069 {
20070 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-parent",
20071 "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
20072 }
20073 ]
20074 },
20075 "vkCmdReserveSpaceForCommandsNVX": {
20076 "(VK_NVX_device_generated_commands)": [
20077 {
20078 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-01329",
20079 "text": " The provided <code>commandBuffer</code> <strong class=\"purple\">must</strong> not have had a prior space reservation since its creation or the last reset."
20080 },
20081 {
20082 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-01330",
20083 "text": " The state of the <code>commandBuffer</code> <strong class=\"purple\">must</strong> be legal to execute all commands within the sequence provided by the <code>indirectCommandsLayout</code> member of <code>pProcessCommandsInfo</code>."
20084 },
20085 {
20086 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-parameter",
20087 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
20088 },
20089 {
20090 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-pReserveSpaceInfo-parameter",
20091 "text": " <code>pReserveSpaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCmdReserveSpaceForCommandsInfoNVX</code> structure"
20092 },
20093 {
20094 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-recording",
20095 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
20096 },
20097 {
20098 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-cmdpool",
20099 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
20100 },
20101 {
20102 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-renderpass",
20103 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
20104 },
20105 {
20106 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-bufferlevel",
20107 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a secondary <code>VkCommandBuffer</code>"
20108 }
20109 ]
20110 },
20111 "VkCmdReserveSpaceForCommandsInfoNVX": {
20112 "(VK_NVX_device_generated_commands)": [
20113 {
20114 "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-sType-sType",
20115 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX</code>"
20116 },
20117 {
20118 "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-pNext-pNext",
20119 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20120 },
20121 {
20122 "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-objectTable-parameter",
20123 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
20124 },
20125 {
20126 "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-indirectCommandsLayout-parameter",
20127 "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkIndirectCommandsLayoutNVX</code> handle"
20128 },
20129 {
20130 "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-commonparent",
20131 "text": " Both of <code>indirectCommandsLayout</code>, and <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
20132 }
20133 ]
20134 },
20135 "vkCmdProcessCommandsNVX": {
20136 "(VK_NVX_device_generated_commands)": [
20137 {
20138 "vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-parameter",
20139 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
20140 },
20141 {
20142 "vuid": "VUID-vkCmdProcessCommandsNVX-pProcessCommandsInfo-parameter",
20143 "text": " <code>pProcessCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCmdProcessCommandsInfoNVX</code> structure"
20144 },
20145 {
20146 "vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-recording",
20147 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
20148 },
20149 {
20150 "vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-cmdpool",
20151 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
20152 },
20153 {
20154 "vuid": "VUID-vkCmdProcessCommandsNVX-renderpass",
20155 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
20156 }
20157 ]
20158 },
20159 "VkCmdProcessCommandsInfoNVX": {
20160 "(VK_NVX_device_generated_commands)": [
20161 {
20162 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-objectTable-01331",
20163 "text": " The provided <code>objectTable</code> <strong class=\"purple\">must</strong> include all objects referenced by the generation process"
20164 },
20165 {
20166 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsTokenCount-01332",
20167 "text": " <code>indirectCommandsTokenCount</code> <strong class=\"purple\">must</strong> match the <code>indirectCommandsLayout</code>&#8217;s <code>tokenCount</code>"
20168 },
20169 {
20170 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-tokenType-01333",
20171 "text": " The <code>tokenType</code> member of each entry in the <code>pIndirectCommandsTokens</code> array <strong class=\"purple\">must</strong> match the values used at creation time of <code>indirectCommandsLayout</code>"
20172 },
20173 {
20174 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01334",
20175 "text": " If <code>targetCommandBuffer</code> is provided, it <strong class=\"purple\">must</strong> have reserved command space"
20176 },
20177 {
20178 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01335",
20179 "text": " If <code>targetCommandBuffer</code> is provided, the <code>objectTable</code> <strong class=\"purple\">must</strong> match the reservation&#8217;s <code>objectTable</code> and <strong class=\"purple\">must</strong> have had all referenced objects registered at reservation time"
20180 },
20181 {
20182 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01336",
20183 "text": " If <code>targetCommandBuffer</code> is provided, the <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> match the reservation&#8217;s <code>indirectCommandsLayout</code>"
20184 },
20185 {
20186 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01337",
20187 "text": " If <code>targetCommandBuffer</code> is provided, the <code>maxSequencesCount</code> <strong class=\"purple\">must</strong> not exceed the reservation&#8217;s <code>maxSequencesCount</code>"
20188 },
20189 {
20190 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01338",
20191 "text": " If <code>sequencesCountBuffer</code> is used, its usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
20192 },
20193 {
20194 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01339",
20195 "text": " If <code>sequencesCountBuffer</code> is used, <code>sequencesCountOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>minSequenceCountBufferOffsetAlignment</code>"
20196 },
20197 {
20198 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01340",
20199 "text": " If <code>sequencesIndexBuffer</code> is used, its usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
20200 },
20201 {
20202 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01341",
20203 "text": " If <code>sequencesIndexBuffer</code> is used, <code>sequencesIndexOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>minSequenceIndexBufferOffsetAlignment</code>"
20204 },
20205 {
20206 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sType-sType",
20207 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX</code>"
20208 },
20209 {
20210 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-pNext-pNext",
20211 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20212 },
20213 {
20214 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-objectTable-parameter",
20215 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
20216 },
20217 {
20218 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsLayout-parameter",
20219 "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkIndirectCommandsLayoutNVX</code> handle"
20220 },
20221 {
20222 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-pIndirectCommandsTokens-parameter",
20223 "text": " <code>pIndirectCommandsTokens</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>indirectCommandsTokenCount</code> valid <code>VkIndirectCommandsTokenNVX</code> structures"
20224 },
20225 {
20226 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-parameter",
20227 "text": " If <code>targetCommandBuffer</code> is not <code>NULL</code>, <code>targetCommandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
20228 },
20229 {
20230 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-parameter",
20231 "text": " If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesCountBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
20232 },
20233 {
20234 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-parameter",
20235 "text": " If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesIndexBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
20236 },
20237 {
20238 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsTokenCount-arraylength",
20239 "text": " <code>indirectCommandsTokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20240 },
20241 {
20242 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-commonparent",
20243 "text": " Each of <code>indirectCommandsLayout</code>, <code>objectTable</code>, <code>sequencesCountBuffer</code>, <code>sequencesIndexBuffer</code>, and <code>targetCommandBuffer</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
20244 }
20245 ]
20246 },
20247 "vkGetPhysicalDeviceSparseImageFormatProperties": {
20248 "core": [
20249 {
20250 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-01094",
20251 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>VkImageFormatProperties</code>::<code>sampleCounts</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>type</code>, <code>tiling</code>, and <code>usage</code> equal to those in this command and <code>flags</code> equal to the value that is set in <code>VkImageCreateInfo</code>::<code>flags</code> when the image is created"
20252 },
20253 {
20254 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-physicalDevice-parameter",
20255 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20256 },
20257 {
20258 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-format-parameter",
20259 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
20260 },
20261 {
20262 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-type-parameter",
20263 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
20264 },
20265 {
20266 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-parameter",
20267 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
20268 },
20269 {
20270 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-parameter",
20271 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
20272 },
20273 {
20274 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-requiredbitmask",
20275 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
20276 },
20277 {
20278 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-tiling-parameter",
20279 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
20280 },
20281 {
20282 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pPropertyCount-parameter",
20283 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
20284 },
20285 {
20286 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pProperties-parameter",
20287 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkSparseImageFormatProperties</code> structures"
20288 }
20289 ]
20290 },
20291 "vkGetPhysicalDeviceSparseImageFormatProperties2": {
20292 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
20293 {
20294 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter",
20295 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
20296 },
20297 {
20298 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pFormatInfo-parameter",
20299 "text": " <code>pFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSparseImageFormatInfo2</code> structure"
20300 },
20301 {
20302 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pPropertyCount-parameter",
20303 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
20304 },
20305 {
20306 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pProperties-parameter",
20307 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkSparseImageFormatProperties2</code> structures"
20308 }
20309 ]
20310 },
20311 "VkPhysicalDeviceSparseImageFormatInfo2": {
20312 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
20313 {
20314 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-01095",
20315 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>VkImageFormatProperties</code>::<code>sampleCounts</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>type</code>, <code>tiling</code>, and <code>usage</code> equal to those in this command and <code>flags</code> equal to the value that is set in <code>VkImageCreateInfo</code>::<code>flags</code> when the image is created"
20316 },
20317 {
20318 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-sType-sType",
20319 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2</code>"
20320 },
20321 {
20322 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-pNext-pNext",
20323 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20324 },
20325 {
20326 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-format-parameter",
20327 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
20328 },
20329 {
20330 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-type-parameter",
20331 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
20332 },
20333 {
20334 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-parameter",
20335 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
20336 },
20337 {
20338 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-parameter",
20339 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
20340 },
20341 {
20342 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-requiredbitmask",
20343 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
20344 },
20345 {
20346 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-tiling-parameter",
20347 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
20348 }
20349 ]
20350 },
20351 "VkSparseImageFormatProperties2": {
20352 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
20353 {
20354 "vuid": "VUID-VkSparseImageFormatProperties2-sType-sType",
20355 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2</code>"
20356 },
20357 {
20358 "vuid": "VUID-VkSparseImageFormatProperties2-pNext-pNext",
20359 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20360 }
20361 ]
20362 },
20363 "vkGetImageSparseMemoryRequirements": {
20364 "core": [
20365 {
20366 "vuid": "VUID-vkGetImageSparseMemoryRequirements-device-parameter",
20367 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
20368 },
20369 {
20370 "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parameter",
20371 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
20372 },
20373 {
20374 "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirementCount-parameter",
20375 "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
20376 },
20377 {
20378 "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter",
20379 "text": " If the value referenced by <code>pSparseMemoryRequirementCount</code> is not <code>0</code>, and <code>pSparseMemoryRequirements</code> is not <code>NULL</code>, <code>pSparseMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSparseMemoryRequirementCount</code> <code>VkSparseImageMemoryRequirements</code> structures"
20380 },
20381 {
20382 "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parent",
20383 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
20384 }
20385 ]
20386 },
20387 "vkGetImageSparseMemoryRequirements2": {
20388 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
20389 {
20390 "vuid": "VUID-vkGetImageSparseMemoryRequirements2-device-parameter",
20391 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
20392 },
20393 {
20394 "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pInfo-parameter",
20395 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageSparseMemoryRequirementsInfo2</code> structure"
20396 },
20397 {
20398 "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirementCount-parameter",
20399 "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
20400 },
20401 {
20402 "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirements-parameter",
20403 "text": " If the value referenced by <code>pSparseMemoryRequirementCount</code> is not <code>0</code>, and <code>pSparseMemoryRequirements</code> is not <code>NULL</code>, <code>pSparseMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSparseMemoryRequirementCount</code> <code>VkSparseImageMemoryRequirements2</code> structures"
20404 }
20405 ]
20406 },
20407 "VkImageSparseMemoryRequirementsInfo2": {
20408 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
20409 {
20410 "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-sType-sType",
20411 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2</code>"
20412 },
20413 {
20414 "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-pNext-pNext",
20415 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20416 },
20417 {
20418 "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-image-parameter",
20419 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
20420 }
20421 ]
20422 },
20423 "VkSparseImageMemoryRequirements2": {
20424 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
20425 {
20426 "vuid": "VUID-VkSparseImageMemoryRequirements2-sType-sType",
20427 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2</code>"
20428 },
20429 {
20430 "vuid": "VUID-VkSparseImageMemoryRequirements2-pNext-pNext",
20431 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20432 }
20433 ]
20434 },
20435 "VkSparseMemoryBind": {
20436 "core": [
20437 {
20438 "vuid": "VUID-VkSparseMemoryBind-memory-01096",
20439 "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>"
20440 },
20441 {
20442 "vuid": "VUID-VkSparseMemoryBind-memory-01097",
20443 "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"
20444 },
20445 {
20446 "vuid": "VUID-VkSparseMemoryBind-size-01098",
20447 "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20448 },
20449 {
20450 "vuid": "VUID-VkSparseMemoryBind-resourceOffset-01099",
20451 "text": " <code>resourceOffset</code> <strong class=\"purple\">must</strong> be less than the size of the resource"
20452 },
20453 {
20454 "vuid": "VUID-VkSparseMemoryBind-size-01100",
20455 "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the resource minus <code>resourceOffset</code>"
20456 },
20457 {
20458 "vuid": "VUID-VkSparseMemoryBind-memoryOffset-01101",
20459 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
20460 },
20461 {
20462 "vuid": "VUID-VkSparseMemoryBind-size-01102",
20463 "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>"
20464 },
20465 {
20466 "vuid": "VUID-VkSparseMemoryBind-memory-parameter",
20467 "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
20468 },
20469 {
20470 "vuid": "VUID-VkSparseMemoryBind-flags-parameter",
20471 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values"
20472 }
20473 ],
20474 "(VK_VERSION_1_1,VK_KHR_external_memory)": [
20475 {
20476 "vuid": "VUID-VkSparseMemoryBind-memory-02730",
20477 "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 must 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."
20478 },
20479 {
20480 "vuid": "VUID-VkSparseMemoryBind-memory-02731",
20481 "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory must 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."
20482 }
20483 ]
20484 },
20485 "VkSparseBufferMemoryBindInfo": {
20486 "core": [
20487 {
20488 "vuid": "VUID-VkSparseBufferMemoryBindInfo-buffer-parameter",
20489 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
20490 },
20491 {
20492 "vuid": "VUID-VkSparseBufferMemoryBindInfo-pBinds-parameter",
20493 "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <code>VkSparseMemoryBind</code> structures"
20494 },
20495 {
20496 "vuid": "VUID-VkSparseBufferMemoryBindInfo-bindCount-arraylength",
20497 "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20498 }
20499 ]
20500 },
20501 "VkSparseImageOpaqueMemoryBindInfo": {
20502 "core": [
20503 {
20504 "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103",
20505 "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>"
20506 },
20507 {
20508 "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-image-parameter",
20509 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
20510 },
20511 {
20512 "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-parameter",
20513 "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <code>VkSparseMemoryBind</code> structures"
20514 },
20515 {
20516 "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-bindCount-arraylength",
20517 "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20518 }
20519 ]
20520 },
20521 "VkSparseImageMemoryBindInfo": {
20522 "core": [
20523 {
20524 "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01722",
20525 "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"
20526 },
20527 {
20528 "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01723",
20529 "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"
20530 },
20531 {
20532 "vuid": "VUID-VkSparseImageMemoryBindInfo-image-parameter",
20533 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
20534 },
20535 {
20536 "vuid": "VUID-VkSparseImageMemoryBindInfo-pBinds-parameter",
20537 "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <code>VkSparseImageMemoryBind</code> structures"
20538 },
20539 {
20540 "vuid": "VUID-VkSparseImageMemoryBindInfo-bindCount-arraylength",
20541 "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
20542 }
20543 ]
20544 },
20545 "VkSparseImageMemoryBind": {
20546 "core": [
20547 {
20548 "vuid": "VUID-VkSparseImageMemoryBind-memory-01104",
20549 "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"
20550 },
20551 {
20552 "vuid": "VUID-VkSparseImageMemoryBind-memory-01105",
20553 "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>"
20554 },
20555 {
20556 "vuid": "VUID-VkSparseImageMemoryBind-subresource-01106",
20557 "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>)"
20558 },
20559 {
20560 "vuid": "VUID-VkSparseImageMemoryBind-offset-01107",
20561 "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"
20562 },
20563 {
20564 "vuid": "VUID-VkSparseImageMemoryBind-extent-01108",
20565 "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"
20566 },
20567 {
20568 "vuid": "VUID-VkSparseImageMemoryBind-offset-01109",
20569 "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"
20570 },
20571 {
20572 "vuid": "VUID-VkSparseImageMemoryBind-extent-01110",
20573 "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"
20574 },
20575 {
20576 "vuid": "VUID-VkSparseImageMemoryBind-offset-01111",
20577 "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"
20578 },
20579 {
20580 "vuid": "VUID-VkSparseImageMemoryBind-extent-01112",
20581 "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"
20582 },
20583 {
20584 "vuid": "VUID-VkSparseImageMemoryBind-subresource-parameter",
20585 "text": " <code>subresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresource</code> structure"
20586 },
20587 {
20588 "vuid": "VUID-VkSparseImageMemoryBind-memory-parameter",
20589 "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
20590 },
20591 {
20592 "vuid": "VUID-VkSparseImageMemoryBind-flags-parameter",
20593 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values"
20594 }
20595 ],
20596 "(VK_VERSION_1_1,VK_KHR_external_memory)": [
20597 {
20598 "vuid": "VUID-VkSparseImageMemoryBind-memory-02732",
20599 "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 must also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when the image was created."
20600 },
20601 {
20602 "vuid": "VUID-VkSparseImageMemoryBind-memory-02733",
20603 "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory must also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created."
20604 }
20605 ]
20606 },
20607 "vkQueueBindSparse": {
20608 "core": [
20609 {
20610 "vuid": "VUID-vkQueueBindSparse-fence-01113",
20611 "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"
20612 },
20613 {
20614 "vuid": "VUID-vkQueueBindSparse-fence-01114",
20615 "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"
20616 },
20617 {
20618 "vuid": "VUID-vkQueueBindSparse-pSignalSemaphores-01115",
20619 "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"
20620 },
20621 {
20622 "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01116",
20623 "text": " When a semaphore unsignal operation defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pBindInfo</code> executes on <code>queue</code>, there <strong class=\"purple\">must</strong> be no other queues waiting on the same semaphore."
20624 },
20625 {
20626 "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01117",
20627 "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pBindInfo</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> previously submitted for execution."
20628 },
20629 {
20630 "vuid": "VUID-vkQueueBindSparse-queue-parameter",
20631 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
20632 },
20633 {
20634 "vuid": "VUID-vkQueueBindSparse-pBindInfo-parameter",
20635 "text": " If <code>bindInfoCount</code> is not <code>0</code>, <code>pBindInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindSparseInfo</code> structures"
20636 },
20637 {
20638 "vuid": "VUID-vkQueueBindSparse-fence-parameter",
20639 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
20640 },
20641 {
20642 "vuid": "VUID-vkQueueBindSparse-queuetype",
20643 "text": " The <code>queue</code> <strong class=\"purple\">must</strong> support sparse binding operations"
20644 },
20645 {
20646 "vuid": "VUID-vkQueueBindSparse-commonparent",
20647 "text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
20648 }
20649 ]
20650 },
20651 "VkBindSparseInfo": {
20652 "core": [
20653 {
20654 "vuid": "VUID-VkBindSparseInfo-sType-sType",
20655 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_SPARSE_INFO</code>"
20656 },
20657 {
20658 "vuid": "VUID-VkBindSparseInfo-pNext-pNext",
20659 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupBindSparseInfo\">VkDeviceGroupBindSparseInfo</a>"
20660 },
20661 {
20662 "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-parameter",
20663 "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
20664 },
20665 {
20666 "vuid": "VUID-VkBindSparseInfo-pBufferBinds-parameter",
20667 "text": " If <code>bufferBindCount</code> is not <code>0</code>, <code>pBufferBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferBindCount</code> valid <code>VkSparseBufferMemoryBindInfo</code> structures"
20668 },
20669 {
20670 "vuid": "VUID-VkBindSparseInfo-pImageOpaqueBinds-parameter",
20671 "text": " If <code>imageOpaqueBindCount</code> is not <code>0</code>, <code>pImageOpaqueBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageOpaqueBindCount</code> valid <code>VkSparseImageOpaqueMemoryBindInfo</code> structures"
20672 },
20673 {
20674 "vuid": "VUID-VkBindSparseInfo-pImageBinds-parameter",
20675 "text": " If <code>imageBindCount</code> is not <code>0</code>, <code>pImageBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageBindCount</code> valid <code>VkSparseImageMemoryBindInfo</code> structures"
20676 },
20677 {
20678 "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-parameter",
20679 "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
20680 },
20681 {
20682 "vuid": "VUID-VkBindSparseInfo-commonparent",
20683 "text": " Both of the elements of <code>pSignalSemaphores</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
20684 }
20685 ]
20686 },
20687 "VkDeviceGroupBindSparseInfo": {
20688 "(VK_VERSION_1_1,VK_KHR_device_group)": [
20689 {
20690 "vuid": "VUID-VkDeviceGroupBindSparseInfo-resourceDeviceIndex-01118",
20691 "text": " <code>resourceDeviceIndex</code> and <code>memoryDeviceIndex</code> <strong class=\"purple\">must</strong> both be valid device indices."
20692 },
20693 {
20694 "vuid": "VUID-VkDeviceGroupBindSparseInfo-memoryDeviceIndex-01119",
20695 "text": " Each memory allocation bound in this batch <strong class=\"purple\">must</strong> have allocated an instance for <code>memoryDeviceIndex</code>."
20696 },
20697 {
20698 "vuid": "VUID-VkDeviceGroupBindSparseInfo-sType-sType",
20699 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO</code>"
20700 }
20701 ]
20702 },
20703 "vkCreateAndroidSurfaceKHR": {
20704 "(VK_KHR_surface)+(VK_KHR_android_surface)": [
20705 {
20706 "vuid": "VUID-vkCreateAndroidSurfaceKHR-instance-parameter",
20707 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
20708 },
20709 {
20710 "vuid": "VUID-vkCreateAndroidSurfaceKHR-pCreateInfo-parameter",
20711 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAndroidSurfaceCreateInfoKHR</code> structure"
20712 },
20713 {
20714 "vuid": "VUID-vkCreateAndroidSurfaceKHR-pAllocator-parameter",
20715 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
20716 },
20717 {
20718 "vuid": "VUID-vkCreateAndroidSurfaceKHR-pSurface-parameter",
20719 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
20720 }
20721 ]
20722 },
20723 "VkAndroidSurfaceCreateInfoKHR": {
20724 "(VK_KHR_surface)+(VK_KHR_android_surface)": [
20725 {
20726 "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-window-01248",
20727 "text": " <code>window</code> <strong class=\"purple\">must</strong> point to a valid Android <a href=\"#ANativeWindow\">ANativeWindow</a>."
20728 },
20729 {
20730 "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-sType-sType",
20731 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR</code>"
20732 },
20733 {
20734 "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-pNext-pNext",
20735 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20736 },
20737 {
20738 "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-flags-zerobitmask",
20739 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20740 }
20741 ]
20742 },
20743 "vkCreateWaylandSurfaceKHR": {
20744 "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
20745 {
20746 "vuid": "VUID-vkCreateWaylandSurfaceKHR-instance-parameter",
20747 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
20748 },
20749 {
20750 "vuid": "VUID-vkCreateWaylandSurfaceKHR-pCreateInfo-parameter",
20751 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkWaylandSurfaceCreateInfoKHR</code> structure"
20752 },
20753 {
20754 "vuid": "VUID-vkCreateWaylandSurfaceKHR-pAllocator-parameter",
20755 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
20756 },
20757 {
20758 "vuid": "VUID-vkCreateWaylandSurfaceKHR-pSurface-parameter",
20759 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
20760 }
20761 ]
20762 },
20763 "VkWaylandSurfaceCreateInfoKHR": {
20764 "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
20765 {
20766 "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-display-01304",
20767 "text": " <code>display</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_display</code>."
20768 },
20769 {
20770 "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-surface-01305",
20771 "text": " <code>surface</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_surface</code>."
20772 },
20773 {
20774 "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-sType-sType",
20775 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR</code>"
20776 },
20777 {
20778 "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-pNext-pNext",
20779 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20780 },
20781 {
20782 "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-flags-zerobitmask",
20783 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20784 }
20785 ]
20786 },
20787 "vkCreateWin32SurfaceKHR": {
20788 "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
20789 {
20790 "vuid": "VUID-vkCreateWin32SurfaceKHR-instance-parameter",
20791 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
20792 },
20793 {
20794 "vuid": "VUID-vkCreateWin32SurfaceKHR-pCreateInfo-parameter",
20795 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkWin32SurfaceCreateInfoKHR</code> structure"
20796 },
20797 {
20798 "vuid": "VUID-vkCreateWin32SurfaceKHR-pAllocator-parameter",
20799 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
20800 },
20801 {
20802 "vuid": "VUID-vkCreateWin32SurfaceKHR-pSurface-parameter",
20803 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
20804 }
20805 ]
20806 },
20807 "VkWin32SurfaceCreateInfoKHR": {
20808 "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
20809 {
20810 "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hinstance-01307",
20811 "text": " <code>hinstance</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HINSTANCE</code>."
20812 },
20813 {
20814 "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hwnd-01308",
20815 "text": " <code>hwnd</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HWND</code>."
20816 },
20817 {
20818 "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-sType-sType",
20819 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR</code>"
20820 },
20821 {
20822 "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-pNext-pNext",
20823 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20824 },
20825 {
20826 "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-flags-zerobitmask",
20827 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20828 }
20829 ]
20830 },
20831 "vkCreateXcbSurfaceKHR": {
20832 "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
20833 {
20834 "vuid": "VUID-vkCreateXcbSurfaceKHR-instance-parameter",
20835 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
20836 },
20837 {
20838 "vuid": "VUID-vkCreateXcbSurfaceKHR-pCreateInfo-parameter",
20839 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkXcbSurfaceCreateInfoKHR</code> structure"
20840 },
20841 {
20842 "vuid": "VUID-vkCreateXcbSurfaceKHR-pAllocator-parameter",
20843 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
20844 },
20845 {
20846 "vuid": "VUID-vkCreateXcbSurfaceKHR-pSurface-parameter",
20847 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
20848 }
20849 ]
20850 },
20851 "VkXcbSurfaceCreateInfoKHR": {
20852 "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
20853 {
20854 "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-connection-01310",
20855 "text": " <code>connection</code> <strong class=\"purple\">must</strong> point to a valid X11 <code>xcb_connection_t</code>."
20856 },
20857 {
20858 "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-window-01311",
20859 "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid X11 <code>xcb_window_t</code>."
20860 },
20861 {
20862 "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-sType-sType",
20863 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR</code>"
20864 },
20865 {
20866 "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-pNext-pNext",
20867 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20868 },
20869 {
20870 "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-flags-zerobitmask",
20871 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20872 }
20873 ]
20874 },
20875 "vkCreateXlibSurfaceKHR": {
20876 "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
20877 {
20878 "vuid": "VUID-vkCreateXlibSurfaceKHR-instance-parameter",
20879 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
20880 },
20881 {
20882 "vuid": "VUID-vkCreateXlibSurfaceKHR-pCreateInfo-parameter",
20883 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkXlibSurfaceCreateInfoKHR</code> structure"
20884 },
20885 {
20886 "vuid": "VUID-vkCreateXlibSurfaceKHR-pAllocator-parameter",
20887 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
20888 },
20889 {
20890 "vuid": "VUID-vkCreateXlibSurfaceKHR-pSurface-parameter",
20891 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
20892 }
20893 ]
20894 },
20895 "VkXlibSurfaceCreateInfoKHR": {
20896 "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
20897 {
20898 "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-dpy-01313",
20899 "text": " <code>dpy</code> <strong class=\"purple\">must</strong> point to a valid Xlib <code>Display</code>."
20900 },
20901 {
20902 "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-window-01314",
20903 "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid Xlib <code>Window</code>."
20904 },
20905 {
20906 "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-sType-sType",
20907 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR</code>"
20908 },
20909 {
20910 "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-pNext-pNext",
20911 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20912 },
20913 {
20914 "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-flags-zerobitmask",
20915 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20916 }
20917 ]
20918 },
20919 "vkCreateImagePipeSurfaceFUCHSIA": {
20920 "(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [
20921 {
20922 "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-instance-parameter",
20923 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
20924 },
20925 {
20926 "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pCreateInfo-parameter",
20927 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImagePipeSurfaceCreateInfoFUCHSIA</code> structure"
20928 },
20929 {
20930 "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pAllocator-parameter",
20931 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
20932 },
20933 {
20934 "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pSurface-parameter",
20935 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
20936 }
20937 ]
20938 },
20939 "VkImagePipeSurfaceCreateInfoFUCHSIA": {
20940 "(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [
20941 {
20942 "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-imagePipeHandle-00000",
20943 "text": " <code>imagePipeHandle</code> <strong class=\"purple\">must</strong> be a valid <code>zx_handle_t</code>"
20944 },
20945 {
20946 "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-sType-sType",
20947 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA</code>"
20948 },
20949 {
20950 "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-pNext-pNext",
20951 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20952 },
20953 {
20954 "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-flags-zerobitmask",
20955 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20956 }
20957 ]
20958 },
20959 "vkCreateStreamDescriptorSurfaceGGP": {
20960 "(VK_KHR_surface)+(VK_GGP_stream_descriptor_surface)": [
20961 {
20962 "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-instance-parameter",
20963 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
20964 },
20965 {
20966 "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pCreateInfo-parameter",
20967 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkStreamDescriptorSurfaceCreateInfoGGP</code> structure"
20968 },
20969 {
20970 "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pAllocator-parameter",
20971 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
20972 },
20973 {
20974 "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pSurface-parameter",
20975 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
20976 }
20977 ]
20978 },
20979 "VkStreamDescriptorSurfaceCreateInfoGGP": {
20980 "(VK_KHR_surface)+(VK_GGP_stream_descriptor_surface)": [
20981 {
20982 "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-streamDescriptor-02681",
20983 "text": " <code>streamDescriptor</code> <strong class=\"purple\">must</strong> be a valid <code>GgpStreamDescriptor</code>"
20984 },
20985 {
20986 "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-sType-sType",
20987 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP</code>"
20988 },
20989 {
20990 "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-pNext-pNext",
20991 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
20992 },
20993 {
20994 "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-flags-zerobitmask",
20995 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
20996 }
20997 ]
20998 },
20999 "vkCreateIOSSurfaceMVK": {
21000 "(VK_KHR_surface)+(VK_MVK_ios_surface)": [
21001 {
21002 "vuid": "VUID-vkCreateIOSSurfaceMVK-instance-parameter",
21003 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
21004 },
21005 {
21006 "vuid": "VUID-vkCreateIOSSurfaceMVK-pCreateInfo-parameter",
21007 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkIOSSurfaceCreateInfoMVK</code> structure"
21008 },
21009 {
21010 "vuid": "VUID-vkCreateIOSSurfaceMVK-pAllocator-parameter",
21011 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
21012 },
21013 {
21014 "vuid": "VUID-vkCreateIOSSurfaceMVK-pSurface-parameter",
21015 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
21016 }
21017 ]
21018 },
21019 "VkIOSSurfaceCreateInfoMVK": {
21020 "(VK_KHR_surface)+(VK_MVK_ios_surface)": [
21021 {
21022 "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pView-01316",
21023 "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid <code>UIView</code> and <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> instance of type <a href=\"#CAMetalLayer\">CAMetalLayer</a>."
21024 },
21025 {
21026 "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-sType-sType",
21027 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK</code>"
21028 },
21029 {
21030 "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pNext-pNext",
21031 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21032 },
21033 {
21034 "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-flags-zerobitmask",
21035 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
21036 }
21037 ]
21038 },
21039 "vkCreateMacOSSurfaceMVK": {
21040 "(VK_KHR_surface)+(VK_MVK_macos_surface)": [
21041 {
21042 "vuid": "VUID-vkCreateMacOSSurfaceMVK-instance-parameter",
21043 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
21044 },
21045 {
21046 "vuid": "VUID-vkCreateMacOSSurfaceMVK-pCreateInfo-parameter",
21047 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMacOSSurfaceCreateInfoMVK</code> structure"
21048 },
21049 {
21050 "vuid": "VUID-vkCreateMacOSSurfaceMVK-pAllocator-parameter",
21051 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
21052 },
21053 {
21054 "vuid": "VUID-vkCreateMacOSSurfaceMVK-pSurface-parameter",
21055 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
21056 }
21057 ]
21058 },
21059 "VkMacOSSurfaceCreateInfoMVK": {
21060 "(VK_KHR_surface)+(VK_MVK_macos_surface)": [
21061 {
21062 "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pView-01317",
21063 "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid <code>NSView</code> and <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> instance of type <a href=\"#CAMetalLayer\">CAMetalLayer</a>."
21064 },
21065 {
21066 "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-sType-sType",
21067 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK</code>"
21068 },
21069 {
21070 "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pNext-pNext",
21071 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21072 },
21073 {
21074 "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-flags-zerobitmask",
21075 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
21076 }
21077 ]
21078 },
21079 "vkCreateViSurfaceNN": {
21080 "(VK_KHR_surface)+(VK_NN_vi_surface)": [
21081 {
21082 "vuid": "VUID-vkCreateViSurfaceNN-instance-parameter",
21083 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
21084 },
21085 {
21086 "vuid": "VUID-vkCreateViSurfaceNN-pCreateInfo-parameter",
21087 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkViSurfaceCreateInfoNN</code> structure"
21088 },
21089 {
21090 "vuid": "VUID-vkCreateViSurfaceNN-pAllocator-parameter",
21091 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
21092 },
21093 {
21094 "vuid": "VUID-vkCreateViSurfaceNN-pSurface-parameter",
21095 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
21096 }
21097 ]
21098 },
21099 "VkViSurfaceCreateInfoNN": {
21100 "(VK_KHR_surface)+(VK_NN_vi_surface)": [
21101 {
21102 "vuid": "VUID-VkViSurfaceCreateInfoNN-window-01318",
21103 "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid <code>nn</code>::<code>vi</code>::<code>NativeWindowHandle</code>"
21104 },
21105 {
21106 "vuid": "VUID-VkViSurfaceCreateInfoNN-sType-sType",
21107 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN</code>"
21108 },
21109 {
21110 "vuid": "VUID-VkViSurfaceCreateInfoNN-pNext-pNext",
21111 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21112 },
21113 {
21114 "vuid": "VUID-VkViSurfaceCreateInfoNN-flags-zerobitmask",
21115 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
21116 }
21117 ]
21118 },
21119 "vkCreateMetalSurfaceEXT": {
21120 "(VK_KHR_surface)+(VK_EXT_metal_surface)": [
21121 {
21122 "vuid": "VUID-vkCreateMetalSurfaceEXT-instance-parameter",
21123 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
21124 },
21125 {
21126 "vuid": "VUID-vkCreateMetalSurfaceEXT-pCreateInfo-parameter",
21127 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMetalSurfaceCreateInfoEXT</code> structure"
21128 },
21129 {
21130 "vuid": "VUID-vkCreateMetalSurfaceEXT-pAllocator-parameter",
21131 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
21132 },
21133 {
21134 "vuid": "VUID-vkCreateMetalSurfaceEXT-pSurface-parameter",
21135 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
21136 }
21137 ]
21138 },
21139 "VkMetalSurfaceCreateInfoEXT": {
21140 "(VK_KHR_surface)+(VK_EXT_metal_surface)": [
21141 {
21142 "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-sType-sType",
21143 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT</code>"
21144 },
21145 {
21146 "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-pNext-pNext",
21147 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21148 },
21149 {
21150 "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-flags-zerobitmask",
21151 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
21152 }
21153 ]
21154 },
21155 "vkDestroySurfaceKHR": {
21156 "(VK_KHR_surface)": [
21157 {
21158 "vuid": "VUID-vkDestroySurfaceKHR-surface-01266",
21159 "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>"
21160 },
21161 {
21162 "vuid": "VUID-vkDestroySurfaceKHR-surface-01267",
21163 "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"
21164 },
21165 {
21166 "vuid": "VUID-vkDestroySurfaceKHR-surface-01268",
21167 "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>"
21168 },
21169 {
21170 "vuid": "VUID-vkDestroySurfaceKHR-instance-parameter",
21171 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
21172 },
21173 {
21174 "vuid": "VUID-vkDestroySurfaceKHR-surface-parameter",
21175 "text": " If <code>surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
21176 },
21177 {
21178 "vuid": "VUID-vkDestroySurfaceKHR-pAllocator-parameter",
21179 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
21180 },
21181 {
21182 "vuid": "VUID-vkDestroySurfaceKHR-surface-parent",
21183 "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>"
21184 }
21185 ]
21186 },
21187 "vkGetPhysicalDeviceDisplayPropertiesKHR": {
21188 "(VK_KHR_surface)+(VK_KHR_display)": [
21189 {
21190 "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-physicalDevice-parameter",
21191 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21192 },
21193 {
21194 "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pPropertyCount-parameter",
21195 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
21196 },
21197 {
21198 "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pProperties-parameter",
21199 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayPropertiesKHR</code> structures"
21200 }
21201 ]
21202 },
21203 "vkGetPhysicalDeviceDisplayProperties2KHR": {
21204 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
21205 {
21206 "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-physicalDevice-parameter",
21207 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21208 },
21209 {
21210 "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pPropertyCount-parameter",
21211 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
21212 },
21213 {
21214 "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pProperties-parameter",
21215 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayProperties2KHR</code> structures"
21216 }
21217 ]
21218 },
21219 "VkDisplayProperties2KHR": {
21220 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
21221 {
21222 "vuid": "VUID-VkDisplayProperties2KHR-sType-sType",
21223 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR</code>"
21224 },
21225 {
21226 "vuid": "VUID-VkDisplayProperties2KHR-pNext-pNext",
21227 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21228 }
21229 ]
21230 },
21231 "vkAcquireXlibDisplayEXT": {
21232 "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [
21233 {
21234 "vuid": "VUID-vkAcquireXlibDisplayEXT-physicalDevice-parameter",
21235 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21236 },
21237 {
21238 "vuid": "VUID-vkAcquireXlibDisplayEXT-dpy-parameter",
21239 "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
21240 },
21241 {
21242 "vuid": "VUID-vkAcquireXlibDisplayEXT-display-parameter",
21243 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
21244 }
21245 ]
21246 },
21247 "vkGetRandROutputDisplayEXT": {
21248 "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [
21249 {
21250 "vuid": "VUID-vkGetRandROutputDisplayEXT-physicalDevice-parameter",
21251 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21252 },
21253 {
21254 "vuid": "VUID-vkGetRandROutputDisplayEXT-dpy-parameter",
21255 "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
21256 },
21257 {
21258 "vuid": "VUID-vkGetRandROutputDisplayEXT-pDisplay-parameter",
21259 "text": " <code>pDisplay</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayKHR</code> handle"
21260 }
21261 ]
21262 },
21263 "vkReleaseDisplayEXT": {
21264 "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)": [
21265 {
21266 "vuid": "VUID-vkReleaseDisplayEXT-physicalDevice-parameter",
21267 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21268 },
21269 {
21270 "vuid": "VUID-vkReleaseDisplayEXT-display-parameter",
21271 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
21272 }
21273 ]
21274 },
21275 "vkGetPhysicalDeviceDisplayPlanePropertiesKHR": {
21276 "(VK_KHR_surface)+(VK_KHR_display)": [
21277 {
21278 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-physicalDevice-parameter",
21279 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21280 },
21281 {
21282 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pPropertyCount-parameter",
21283 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
21284 },
21285 {
21286 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pProperties-parameter",
21287 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayPlanePropertiesKHR</code> structures"
21288 }
21289 ]
21290 },
21291 "vkGetPhysicalDeviceDisplayPlaneProperties2KHR": {
21292 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
21293 {
21294 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-physicalDevice-parameter",
21295 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21296 },
21297 {
21298 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pPropertyCount-parameter",
21299 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
21300 },
21301 {
21302 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pProperties-parameter",
21303 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayPlaneProperties2KHR</code> structures"
21304 }
21305 ]
21306 },
21307 "VkDisplayPlaneProperties2KHR": {
21308 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
21309 {
21310 "vuid": "VUID-VkDisplayPlaneProperties2KHR-sType-sType",
21311 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR</code>"
21312 },
21313 {
21314 "vuid": "VUID-VkDisplayPlaneProperties2KHR-pNext-pNext",
21315 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21316 }
21317 ]
21318 },
21319 "vkGetDisplayPlaneSupportedDisplaysKHR": {
21320 "(VK_KHR_surface)+(VK_KHR_display)": [
21321 {
21322 "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-planeIndex-01249",
21323 "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>"
21324 },
21325 {
21326 "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-physicalDevice-parameter",
21327 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21328 },
21329 {
21330 "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplayCount-parameter",
21331 "text": " <code>pDisplayCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
21332 },
21333 {
21334 "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplays-parameter",
21335 "text": " If the value referenced by <code>pDisplayCount</code> is not <code>0</code>, and <code>pDisplays</code> is not <code>NULL</code>, <code>pDisplays</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDisplayCount</code> <code>VkDisplayKHR</code> handles"
21336 }
21337 ]
21338 },
21339 "vkGetDisplayModePropertiesKHR": {
21340 "(VK_KHR_surface)+(VK_KHR_display)": [
21341 {
21342 "vuid": "VUID-vkGetDisplayModePropertiesKHR-physicalDevice-parameter",
21343 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21344 },
21345 {
21346 "vuid": "VUID-vkGetDisplayModePropertiesKHR-display-parameter",
21347 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
21348 },
21349 {
21350 "vuid": "VUID-vkGetDisplayModePropertiesKHR-pPropertyCount-parameter",
21351 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
21352 },
21353 {
21354 "vuid": "VUID-vkGetDisplayModePropertiesKHR-pProperties-parameter",
21355 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayModePropertiesKHR</code> structures"
21356 }
21357 ]
21358 },
21359 "vkGetDisplayModeProperties2KHR": {
21360 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
21361 {
21362 "vuid": "VUID-vkGetDisplayModeProperties2KHR-physicalDevice-parameter",
21363 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21364 },
21365 {
21366 "vuid": "VUID-vkGetDisplayModeProperties2KHR-display-parameter",
21367 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
21368 },
21369 {
21370 "vuid": "VUID-vkGetDisplayModeProperties2KHR-pPropertyCount-parameter",
21371 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
21372 },
21373 {
21374 "vuid": "VUID-vkGetDisplayModeProperties2KHR-pProperties-parameter",
21375 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayModeProperties2KHR</code> structures"
21376 }
21377 ]
21378 },
21379 "VkDisplayModeProperties2KHR": {
21380 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
21381 {
21382 "vuid": "VUID-VkDisplayModeProperties2KHR-sType-sType",
21383 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR</code>"
21384 },
21385 {
21386 "vuid": "VUID-VkDisplayModeProperties2KHR-pNext-pNext",
21387 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21388 }
21389 ]
21390 },
21391 "VkDisplayModeParametersKHR": {
21392 "(VK_KHR_surface)+(VK_KHR_display)": [
21393 {
21394 "vuid": "VUID-VkDisplayModeParametersKHR-width-01990",
21395 "text": " The <code>width</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21396 },
21397 {
21398 "vuid": "VUID-VkDisplayModeParametersKHR-height-01991",
21399 "text": " The <code>height</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21400 },
21401 {
21402 "vuid": "VUID-VkDisplayModeParametersKHR-refreshRate-01992",
21403 "text": " <code>refreshRate</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
21404 }
21405 ]
21406 },
21407 "vkCreateDisplayModeKHR": {
21408 "(VK_KHR_surface)+(VK_KHR_display)": [
21409 {
21410 "vuid": "VUID-vkCreateDisplayModeKHR-physicalDevice-parameter",
21411 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21412 },
21413 {
21414 "vuid": "VUID-vkCreateDisplayModeKHR-display-parameter",
21415 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
21416 },
21417 {
21418 "vuid": "VUID-vkCreateDisplayModeKHR-pCreateInfo-parameter",
21419 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayModeCreateInfoKHR</code> structure"
21420 },
21421 {
21422 "vuid": "VUID-vkCreateDisplayModeKHR-pAllocator-parameter",
21423 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
21424 },
21425 {
21426 "vuid": "VUID-vkCreateDisplayModeKHR-pMode-parameter",
21427 "text": " <code>pMode</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayModeKHR</code> handle"
21428 }
21429 ]
21430 },
21431 "VkDisplayModeCreateInfoKHR": {
21432 "(VK_KHR_surface)+(VK_KHR_display)": [
21433 {
21434 "vuid": "VUID-VkDisplayModeCreateInfoKHR-sType-sType",
21435 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR</code>"
21436 },
21437 {
21438 "vuid": "VUID-VkDisplayModeCreateInfoKHR-pNext-pNext",
21439 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21440 },
21441 {
21442 "vuid": "VUID-VkDisplayModeCreateInfoKHR-flags-zerobitmask",
21443 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
21444 },
21445 {
21446 "vuid": "VUID-VkDisplayModeCreateInfoKHR-parameters-parameter",
21447 "text": " <code>parameters</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeParametersKHR</code> structure"
21448 }
21449 ]
21450 },
21451 "vkGetDisplayPlaneCapabilitiesKHR": {
21452 "(VK_KHR_surface)+(VK_KHR_display)": [
21453 {
21454 "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter",
21455 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21456 },
21457 {
21458 "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-mode-parameter",
21459 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeKHR</code> handle"
21460 },
21461 {
21462 "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-pCapabilities-parameter",
21463 "text": " <code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayPlaneCapabilitiesKHR</code> structure"
21464 }
21465 ]
21466 },
21467 "vkGetDisplayPlaneCapabilities2KHR": {
21468 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
21469 {
21470 "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-physicalDevice-parameter",
21471 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21472 },
21473 {
21474 "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pDisplayPlaneInfo-parameter",
21475 "text": " <code>pDisplayPlaneInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayPlaneInfo2KHR</code> structure"
21476 },
21477 {
21478 "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pCapabilities-parameter",
21479 "text": " <code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayPlaneCapabilities2KHR</code> structure"
21480 }
21481 ]
21482 },
21483 "VkDisplayPlaneInfo2KHR": {
21484 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
21485 {
21486 "vuid": "VUID-VkDisplayPlaneInfo2KHR-sType-sType",
21487 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR</code>"
21488 },
21489 {
21490 "vuid": "VUID-VkDisplayPlaneInfo2KHR-pNext-pNext",
21491 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21492 },
21493 {
21494 "vuid": "VUID-VkDisplayPlaneInfo2KHR-mode-parameter",
21495 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeKHR</code> handle"
21496 }
21497 ]
21498 },
21499 "VkDisplayPlaneCapabilities2KHR": {
21500 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
21501 {
21502 "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-sType-sType",
21503 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR</code>"
21504 },
21505 {
21506 "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-pNext-pNext",
21507 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21508 }
21509 ]
21510 },
21511 "vkDisplayPowerControlEXT": {
21512 "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [
21513 {
21514 "vuid": "VUID-vkDisplayPowerControlEXT-device-parameter",
21515 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
21516 },
21517 {
21518 "vuid": "VUID-vkDisplayPowerControlEXT-display-parameter",
21519 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
21520 },
21521 {
21522 "vuid": "VUID-vkDisplayPowerControlEXT-pDisplayPowerInfo-parameter",
21523 "text": " <code>pDisplayPowerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayPowerInfoEXT</code> structure"
21524 }
21525 ]
21526 },
21527 "VkDisplayPowerInfoEXT": {
21528 "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [
21529 {
21530 "vuid": "VUID-VkDisplayPowerInfoEXT-sType-sType",
21531 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT</code>"
21532 },
21533 {
21534 "vuid": "VUID-VkDisplayPowerInfoEXT-pNext-pNext",
21535 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21536 },
21537 {
21538 "vuid": "VUID-VkDisplayPowerInfoEXT-powerState-parameter",
21539 "text": " <code>powerState</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPowerStateEXT\">VkDisplayPowerStateEXT</a> value"
21540 }
21541 ]
21542 },
21543 "vkCreateDisplayPlaneSurfaceKHR": {
21544 "(VK_KHR_surface)+(VK_KHR_display)": [
21545 {
21546 "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-instance-parameter",
21547 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
21548 },
21549 {
21550 "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pCreateInfo-parameter",
21551 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplaySurfaceCreateInfoKHR</code> structure"
21552 },
21553 {
21554 "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pAllocator-parameter",
21555 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
21556 },
21557 {
21558 "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pSurface-parameter",
21559 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
21560 }
21561 ]
21562 },
21563 "VkDisplaySurfaceCreateInfoKHR": {
21564 "(VK_KHR_surface)+(VK_KHR_display)": [
21565 {
21566 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeIndex-01252",
21567 "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>"
21568 },
21569 {
21570 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeReorderPossible-01253",
21571 "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>"
21572 },
21573 {
21574 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01254",
21575 "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"
21576 },
21577 {
21578 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01255",
21579 "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>"
21580 },
21581 {
21582 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-width-01256",
21583 "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>"
21584 },
21585 {
21586 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-sType-sType",
21587 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR</code>"
21588 },
21589 {
21590 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-pNext-pNext",
21591 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21592 },
21593 {
21594 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-flags-zerobitmask",
21595 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
21596 },
21597 {
21598 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-displayMode-parameter",
21599 "text": " <code>displayMode</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeKHR</code> handle"
21600 },
21601 {
21602 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-transform-parameter",
21603 "text": " <code>transform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value"
21604 },
21605 {
21606 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-parameter",
21607 "text": " <code>alphaMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPlaneAlphaFlagBitsKHR\">VkDisplayPlaneAlphaFlagBitsKHR</a> value"
21608 }
21609 ]
21610 },
21611 "vkCreateHeadlessSurfaceEXT": {
21612 "(VK_KHR_surface)+(VK_EXT_headless_surface)": [
21613 {
21614 "vuid": "VUID-vkCreateHeadlessSurfaceEXT-instance-parameter",
21615 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
21616 },
21617 {
21618 "vuid": "VUID-vkCreateHeadlessSurfaceEXT-pCreateInfo-parameter",
21619 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkHeadlessSurfaceCreateInfoEXT</code> structure"
21620 },
21621 {
21622 "vuid": "VUID-vkCreateHeadlessSurfaceEXT-pAllocator-parameter",
21623 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
21624 },
21625 {
21626 "vuid": "VUID-vkCreateHeadlessSurfaceEXT-pSurface-parameter",
21627 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
21628 }
21629 ]
21630 },
21631 "VkHeadlessSurfaceCreateInfoEXT": {
21632 "(VK_KHR_surface)+(VK_EXT_headless_surface)": [
21633 {
21634 "vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-sType-sType",
21635 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT</code>"
21636 },
21637 {
21638 "vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-pNext-pNext",
21639 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21640 },
21641 {
21642 "vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-flags-zerobitmask",
21643 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
21644 }
21645 ]
21646 },
21647 "vkGetPhysicalDeviceSurfaceSupportKHR": {
21648 "(VK_KHR_surface)": [
21649 {
21650 "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-queueFamilyIndex-01269",
21651 "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>"
21652 },
21653 {
21654 "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter",
21655 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21656 },
21657 {
21658 "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-surface-parameter",
21659 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
21660 },
21661 {
21662 "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter",
21663 "text": " <code>pSupported</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBool32</code> value"
21664 },
21665 {
21666 "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent",
21667 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
21668 }
21669 ]
21670 },
21671 "vkGetPhysicalDeviceWaylandPresentationSupportKHR": {
21672 "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
21673 {
21674 "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-queueFamilyIndex-01306",
21675 "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>"
21676 },
21677 {
21678 "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter",
21679 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21680 },
21681 {
21682 "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-display-parameter",
21683 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>wl_display</code> value"
21684 }
21685 ]
21686 },
21687 "vkGetPhysicalDeviceWin32PresentationSupportKHR": {
21688 "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
21689 {
21690 "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-queueFamilyIndex-01309",
21691 "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>"
21692 },
21693 {
21694 "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter",
21695 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21696 }
21697 ]
21698 },
21699 "vkGetPhysicalDeviceXcbPresentationSupportKHR": {
21700 "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
21701 {
21702 "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-queueFamilyIndex-01312",
21703 "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>"
21704 },
21705 {
21706 "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter",
21707 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21708 },
21709 {
21710 "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-connection-parameter",
21711 "text": " <code>connection</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>xcb_connection_t</code> value"
21712 }
21713 ]
21714 },
21715 "vkGetPhysicalDeviceXlibPresentationSupportKHR": {
21716 "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
21717 {
21718 "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-queueFamilyIndex-01315",
21719 "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>"
21720 },
21721 {
21722 "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter",
21723 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21724 },
21725 {
21726 "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-dpy-parameter",
21727 "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
21728 }
21729 ]
21730 },
21731 "vkGetPhysicalDeviceSurfaceCapabilitiesKHR": {
21732 "(VK_KHR_surface)": [
21733 {
21734 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter",
21735 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21736 },
21737 {
21738 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-parameter",
21739 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
21740 },
21741 {
21742 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-pSurfaceCapabilities-parameter",
21743 "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceCapabilitiesKHR</code> structure"
21744 },
21745 {
21746 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-commonparent",
21747 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
21748 }
21749 ]
21750 },
21751 "vkGetPhysicalDeviceSurfaceCapabilities2KHR": {
21752 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive,VK_KHR_win32_surface)": [
21753 {
21754 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-02671",
21755 "text": " If an instance of <a href=\"#VkSurfaceCapabilitiesFullScreenExclusiveEXT\">VkSurfaceCapabilitiesFullScreenExclusiveEXT</a> is included in the <code>pNext</code> chain of <code>pSurfaceCapabilities</code>, an instance of <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a> <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain of <code>pSurfaceInfo</code>."
21756 }
21757 ],
21758 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
21759 {
21760 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter",
21761 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21762 },
21763 {
21764 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-parameter",
21765 "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSurfaceInfo2KHR</code> structure"
21766 },
21767 {
21768 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceCapabilities-parameter",
21769 "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceCapabilities2KHR</code> structure"
21770 }
21771 ]
21772 },
21773 "VkPhysicalDeviceSurfaceInfo2KHR": {
21774 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_win32_surface,VK_EXT_full_screen_exclusive)": [
21775 {
21776 "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-02672",
21777 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> 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>, an instance of <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a> <strong class=\"purple\">must</strong> be present in the <code>pNext</code> chain"
21778 }
21779 ],
21780 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
21781 {
21782 "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType",
21783 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR</code>"
21784 },
21785 {
21786 "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext",
21787 "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>"
21788 },
21789 {
21790 "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-unique",
21791 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
21792 },
21793 {
21794 "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter",
21795 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
21796 }
21797 ]
21798 },
21799 "VkSurfaceFullScreenExclusiveInfoEXT": {
21800 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)": [
21801 {
21802 "vuid": "VUID-VkSurfaceFullScreenExclusiveInfoEXT-sType-sType",
21803 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT</code>"
21804 },
21805 {
21806 "vuid": "VUID-VkSurfaceFullScreenExclusiveInfoEXT-fullScreenExclusive-parameter",
21807 "text": " <code>fullScreenExclusive</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFullScreenExclusiveEXT\">VkFullScreenExclusiveEXT</a> value"
21808 }
21809 ]
21810 },
21811 "VkSurfaceFullScreenExclusiveWin32InfoEXT": {
21812 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)+(VK_KHR_win32_surface)": [
21813 {
21814 "vuid": "VUID-VkSurfaceFullScreenExclusiveWin32InfoEXT-hmonitor-02673",
21815 "text": " <code>hmonitor</code> <strong class=\"purple\">must</strong> be a valid <code>HMONITOR</code>"
21816 },
21817 {
21818 "vuid": "VUID-VkSurfaceFullScreenExclusiveWin32InfoEXT-sType-sType",
21819 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT</code>"
21820 }
21821 ]
21822 },
21823 "VkSurfaceCapabilities2KHR": {
21824 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
21825 {
21826 "vuid": "VUID-VkSurfaceCapabilities2KHR-sType-sType",
21827 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR</code>"
21828 },
21829 {
21830 "vuid": "VUID-VkSurfaceCapabilities2KHR-pNext-pNext",
21831 "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>"
21832 },
21833 {
21834 "vuid": "VUID-VkSurfaceCapabilities2KHR-sType-unique",
21835 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
21836 }
21837 ]
21838 },
21839 "VkSurfaceProtectedCapabilitiesKHR": {
21840 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_surface_protected_capabilities)": [
21841 {
21842 "vuid": "VUID-VkSurfaceProtectedCapabilitiesKHR-sType-sType",
21843 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR</code>"
21844 }
21845 ]
21846 },
21847 "VkSharedPresentSurfaceCapabilitiesKHR": {
21848 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_shared_presentable_image)": [
21849 {
21850 "vuid": "VUID-VkSharedPresentSurfaceCapabilitiesKHR-sType-sType",
21851 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR</code>"
21852 }
21853 ]
21854 },
21855 "VkDisplayNativeHdrSurfaceCapabilitiesAMD": {
21856 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_AMD_display_native_hdr)": [
21857 {
21858 "vuid": "VUID-VkDisplayNativeHdrSurfaceCapabilitiesAMD-sType-sType",
21859 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD</code>"
21860 }
21861 ]
21862 },
21863 "VkSurfaceCapabilitiesFullScreenExclusiveEXT": {
21864 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)": [
21865 {
21866 "vuid": "VUID-VkSurfaceCapabilitiesFullScreenExclusiveEXT-sType-sType",
21867 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT</code>"
21868 }
21869 ]
21870 },
21871 "vkGetPhysicalDeviceSurfaceCapabilities2EXT": {
21872 "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
21873 {
21874 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-physicalDevice-parameter",
21875 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21876 },
21877 {
21878 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-parameter",
21879 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
21880 },
21881 {
21882 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-pSurfaceCapabilities-parameter",
21883 "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceCapabilities2EXT</code> structure"
21884 },
21885 {
21886 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-commonparent",
21887 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
21888 }
21889 ]
21890 },
21891 "VkSurfaceCapabilities2EXT": {
21892 "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
21893 {
21894 "vuid": "VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246",
21895 "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>."
21896 },
21897 {
21898 "vuid": "VUID-VkSurfaceCapabilities2EXT-sType-sType",
21899 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT</code>"
21900 },
21901 {
21902 "vuid": "VUID-VkSurfaceCapabilities2EXT-pNext-pNext",
21903 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21904 }
21905 ]
21906 },
21907 "vkGetPhysicalDeviceSurfaceFormatsKHR": {
21908 "(VK_KHR_surface)": [
21909 {
21910 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-02739",
21911 "text": " <code>surface</code> must be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism."
21912 },
21913 {
21914 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter",
21915 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21916 },
21917 {
21918 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-parameter",
21919 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
21920 },
21921 {
21922 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormatCount-parameter",
21923 "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
21924 },
21925 {
21926 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormats-parameter",
21927 "text": " If the value referenced by <code>pSurfaceFormatCount</code> is not <code>0</code>, and <code>pSurfaceFormats</code> is not <code>NULL</code>, <code>pSurfaceFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSurfaceFormatCount</code> <code>VkSurfaceFormatKHR</code> structures"
21928 },
21929 {
21930 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-commonparent",
21931 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
21932 }
21933 ]
21934 },
21935 "vkGetPhysicalDeviceSurfaceFormats2KHR": {
21936 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
21937 {
21938 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-02740",
21939 "text": " <code>pSurfaceInfo</code>::<code>surface</code> must be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism."
21940 },
21941 {
21942 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-physicalDevice-parameter",
21943 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21944 },
21945 {
21946 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-parameter",
21947 "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSurfaceInfo2KHR</code> structure"
21948 },
21949 {
21950 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormatCount-parameter",
21951 "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
21952 },
21953 {
21954 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormats-parameter",
21955 "text": " If the value referenced by <code>pSurfaceFormatCount</code> is not <code>0</code>, and <code>pSurfaceFormats</code> is not <code>NULL</code>, <code>pSurfaceFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSurfaceFormatCount</code> <code>VkSurfaceFormat2KHR</code> structures"
21956 }
21957 ]
21958 },
21959 "VkSurfaceFormat2KHR": {
21960 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
21961 {
21962 "vuid": "VUID-VkSurfaceFormat2KHR-sType-sType",
21963 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR</code>"
21964 },
21965 {
21966 "vuid": "VUID-VkSurfaceFormat2KHR-pNext-pNext",
21967 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
21968 }
21969 ]
21970 },
21971 "vkGetPhysicalDeviceSurfacePresentModesKHR": {
21972 "(VK_KHR_surface)": [
21973 {
21974 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter",
21975 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
21976 },
21977 {
21978 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-parameter",
21979 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
21980 },
21981 {
21982 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModeCount-parameter",
21983 "text": " <code>pPresentModeCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
21984 },
21985 {
21986 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModes-parameter",
21987 "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"
21988 },
21989 {
21990 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-commonparent",
21991 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
21992 }
21993 ]
21994 },
21995 "vkGetPhysicalDeviceSurfacePresentModes2EXT": {
21996 "(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [
21997 {
21998 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-physicalDevice-parameter",
21999 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
22000 },
22001 {
22002 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-parameter",
22003 "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSurfaceInfo2KHR</code> structure"
22004 },
22005 {
22006 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModeCount-parameter",
22007 "text": " <code>pPresentModeCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
22008 },
22009 {
22010 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModes-parameter",
22011 "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"
22012 }
22013 ]
22014 },
22015 "vkAcquireFullScreenExclusiveModeEXT": {
22016 "(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [
22017 {
22018 "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02674",
22019 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
22020 },
22021 {
22022 "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02675",
22023 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a swapchain created with an instance of <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a>, with <code>fullScreenExclusive</code> set to <code>VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT</code>"
22024 },
22025 {
22026 "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02676",
22027 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not currently have exclusive full-screen access"
22028 },
22029 {
22030 "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-device-parameter",
22031 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22032 },
22033 {
22034 "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-parameter",
22035 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
22036 },
22037 {
22038 "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-commonparent",
22039 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
22040 }
22041 ]
22042 },
22043 "vkReleaseFullScreenExclusiveModeEXT": {
22044 "(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [
22045 {
22046 "vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02677",
22047 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
22048 },
22049 {
22050 "vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02678",
22051 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a swapchain created with an instance of <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a>, with <code>fullScreenExclusive</code> set to <code>VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT</code>"
22052 }
22053 ]
22054 },
22055 "vkGetDeviceGroupPresentCapabilitiesKHR": {
22056 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
22057 {
22058 "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-device-parameter",
22059 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22060 },
22061 {
22062 "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-pDeviceGroupPresentCapabilities-parameter",
22063 "text": " <code>pDeviceGroupPresentCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceGroupPresentCapabilitiesKHR</code> structure"
22064 }
22065 ]
22066 },
22067 "VkDeviceGroupPresentCapabilitiesKHR": {
22068 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
22069 {
22070 "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-sType-sType",
22071 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR</code>"
22072 },
22073 {
22074 "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-pNext-pNext",
22075 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
22076 }
22077 ]
22078 },
22079 "vkGetDeviceGroupSurfacePresentModesKHR": {
22080 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
22081 {
22082 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-device-parameter",
22083 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22084 },
22085 {
22086 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-parameter",
22087 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
22088 },
22089 {
22090 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-pModes-parameter",
22091 "text": " <code>pModes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentModeFlagsKHR\">VkDeviceGroupPresentModeFlagsKHR</a> value"
22092 },
22093 {
22094 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent",
22095 "text": " Both of <code>device</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
22096 }
22097 ]
22098 },
22099 "vkGetDeviceGroupSurfacePresentModes2EXT": {
22100 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_EXT_full_screen_exclusive)": [
22101 {
22102 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-device-parameter",
22103 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22104 },
22105 {
22106 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pSurfaceInfo-parameter",
22107 "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSurfaceInfo2KHR</code> structure"
22108 },
22109 {
22110 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pModes-parameter",
22111 "text": " <code>pModes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentModeFlagsKHR\">VkDeviceGroupPresentModeFlagsKHR</a> value"
22112 }
22113 ]
22114 },
22115 "vkGetPhysicalDevicePresentRectanglesKHR": {
22116 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
22117 {
22118 "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter",
22119 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
22120 },
22121 {
22122 "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter",
22123 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
22124 },
22125 {
22126 "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRectCount-parameter",
22127 "text": " <code>pRectCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
22128 },
22129 {
22130 "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter",
22131 "text": " If the value referenced by <code>pRectCount</code> is not <code>0</code>, and <code>pRects</code> is not <code>NULL</code>, <code>pRects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pRectCount</code> <code>VkRect2D</code> structures"
22132 },
22133 {
22134 "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent",
22135 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
22136 }
22137 ]
22138 },
22139 "vkGetRefreshCycleDurationGOOGLE": {
22140 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
22141 {
22142 "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter",
22143 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22144 },
22145 {
22146 "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-swapchain-parameter",
22147 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
22148 },
22149 {
22150 "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-pDisplayTimingProperties-parameter",
22151 "text": " <code>pDisplayTimingProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkRefreshCycleDurationGOOGLE</code> structure"
22152 },
22153 {
22154 "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-commonparent",
22155 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
22156 }
22157 ]
22158 },
22159 "vkGetPastPresentationTimingGOOGLE": {
22160 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
22161 {
22162 "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-device-parameter",
22163 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22164 },
22165 {
22166 "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-swapchain-parameter",
22167 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
22168 },
22169 {
22170 "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimingCount-parameter",
22171 "text": " <code>pPresentationTimingCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
22172 },
22173 {
22174 "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimings-parameter",
22175 "text": " If the value referenced by <code>pPresentationTimingCount</code> is not <code>0</code>, and <code>pPresentationTimings</code> is not <code>NULL</code>, <code>pPresentationTimings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPresentationTimingCount</code> <code>VkPastPresentationTimingGOOGLE</code> structures"
22176 },
22177 {
22178 "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-commonparent",
22179 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
22180 }
22181 ]
22182 },
22183 "vkGetSwapchainStatusKHR": {
22184 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
22185 {
22186 "vuid": "VUID-vkGetSwapchainStatusKHR-device-parameter",
22187 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22188 },
22189 {
22190 "vuid": "VUID-vkGetSwapchainStatusKHR-swapchain-parameter",
22191 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
22192 },
22193 {
22194 "vuid": "VUID-vkGetSwapchainStatusKHR-commonparent",
22195 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
22196 }
22197 ]
22198 },
22199 "vkCreateSwapchainKHR": {
22200 "(VK_KHR_surface)+(VK_KHR_swapchain)": [
22201 {
22202 "vuid": "VUID-vkCreateSwapchainKHR-device-parameter",
22203 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22204 },
22205 {
22206 "vuid": "VUID-vkCreateSwapchainKHR-pCreateInfo-parameter",
22207 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSwapchainCreateInfoKHR</code> structure"
22208 },
22209 {
22210 "vuid": "VUID-vkCreateSwapchainKHR-pAllocator-parameter",
22211 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
22212 },
22213 {
22214 "vuid": "VUID-vkCreateSwapchainKHR-pSwapchain-parameter",
22215 "text": " <code>pSwapchain</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSwapchainKHR</code> handle"
22216 }
22217 ]
22218 },
22219 "VkSwapchainCreateInfoKHR": {
22220 "(VK_KHR_surface)+(VK_KHR_swapchain)": [
22221 {
22222 "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-01270",
22223 "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>"
22224 },
22225 {
22226 "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01271",
22227 "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"
22228 },
22229 {
22230 "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01272",
22231 "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"
22232 },
22233 {
22234 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01273",
22235 "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"
22236 },
22237 {
22238 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01274",
22239 "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"
22240 },
22241 {
22242 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01689",
22243 "text": " <code>imageExtent</code> members <code>width</code> and <code>height</code> <strong class=\"purple\">must</strong> both be non-zero"
22244 },
22245 {
22246 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275",
22247 "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"
22248 },
22249 {
22250 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277",
22251 "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"
22252 },
22253 {
22254 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278",
22255 "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>"
22256 },
22257 {
22258 "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-01279",
22259 "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"
22260 },
22261 {
22262 "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-01280",
22263 "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"
22264 },
22265 {
22266 "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01281",
22267 "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"
22268 },
22269 {
22270 "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933",
22271 "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>"
22272 },
22273 {
22274 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01778",
22275 "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>"
22276 },
22277 {
22278 "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-sType",
22279 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR</code>"
22280 },
22281 {
22282 "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-pNext",
22283 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupSwapchainCreateInfoKHR\">VkDeviceGroupSwapchainCreateInfoKHR</a>, <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a>, <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a>, <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a>, <a href=\"#VkSwapchainCounterCreateInfoEXT\">VkSwapchainCounterCreateInfoEXT</a>, or <a href=\"#VkSwapchainDisplayNativeHdrCreateInfoAMD\">VkSwapchainDisplayNativeHdrCreateInfoAMD</a>"
22284 },
22285 {
22286 "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-unique",
22287 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
22288 },
22289 {
22290 "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-parameter",
22291 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSwapchainCreateFlagBitsKHR\">VkSwapchainCreateFlagBitsKHR</a> values"
22292 },
22293 {
22294 "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-parameter",
22295 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
22296 },
22297 {
22298 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter",
22299 "text": " <code>imageFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
22300 },
22301 {
22302 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter",
22303 "text": " <code>imageColorSpace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkColorSpaceKHR\">VkColorSpaceKHR</a> value"
22304 },
22305 {
22306 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter",
22307 "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
22308 },
22309 {
22310 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask",
22311 "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
22312 },
22313 {
22314 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter",
22315 "text": " <code>imageSharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
22316 },
22317 {
22318 "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-parameter",
22319 "text": " <code>preTransform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value"
22320 },
22321 {
22322 "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter",
22323 "text": " <code>compositeAlpha</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompositeAlphaFlagBitsKHR\">VkCompositeAlphaFlagBitsKHR</a> value"
22324 },
22325 {
22326 "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-parameter",
22327 "text": " <code>presentMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> value"
22328 },
22329 {
22330 "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parameter",
22331 "text": " If <code>oldSwapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>oldSwapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
22332 },
22333 {
22334 "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parent",
22335 "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>"
22336 },
22337 {
22338 "vuid": "VUID-VkSwapchainCreateInfoKHR-commonparent",
22339 "text": " Both of <code>oldSwapchain</code>, and <code>surface</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
22340 }
22341 ],
22342 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
22343 {
22344 "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01383",
22345 "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>"
22346 },
22347 {
22348 "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01427",
22349 "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>"
22350 },
22351 {
22352 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01384",
22353 "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>"
22354 }
22355 ],
22356 "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [
22357 {
22358 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01276",
22359 "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"
22360 }
22361 ],
22362 "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
22363 {
22364 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01393",
22365 "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>"
22366 }
22367 ],
22368 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
22369 {
22370 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428",
22371 "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>"
22372 }
22373 ],
22374 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
22375 {
22376 "vuid": "VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429",
22377 "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>"
22378 }
22379 ],
22380 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_swapchain_mutable_format)": [
22381 {
22382 "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03168",
22383 "text": " If <code>flags</code> contains <code>VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR</code> then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a> with a <code>viewFormatCount</code> greater than zero and <code>pViewFormats</code> <strong class=\"purple\">must</strong> have an element equal to <code>imageFormat</code>"
22384 }
22385 ],
22386 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_surface_protected_capabilities)": [
22387 {
22388 "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03187",
22389 "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>"
22390 }
22391 ],
22392 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_full_screen_exclusive,VK_KHR_win32_surface)": [
22393 {
22394 "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-02679",
22395 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> 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>, an instance of <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a> <strong class=\"purple\">must</strong> be present in the <code>pNext</code> chain"
22396 }
22397 ]
22398 },
22399 "VkDeviceGroupSwapchainCreateInfoKHR": {
22400 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
22401 {
22402 "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-sType-sType",
22403 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR</code>"
22404 },
22405 {
22406 "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter",
22407 "text": " <code>modes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> values"
22408 },
22409 {
22410 "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask",
22411 "text": " <code>modes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
22412 }
22413 ]
22414 },
22415 "VkSwapchainDisplayNativeHdrCreateInfoAMD": {
22416 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_AMD_display_native_hdr)": [
22417 {
22418 "vuid": "VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-sType-sType",
22419 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD</code>"
22420 },
22421 {
22422 "vuid": "VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-localDimmingEnable-XXXXX",
22423 "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."
22424 }
22425 ]
22426 },
22427 "vkSetLocalDimmingAMD": {
22428 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_AMD_display_native_hdr)": [
22429 {
22430 "vuid": "VUID-vkSetLocalDimmingAMD-device-parameter",
22431 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22432 },
22433 {
22434 "vuid": "VUID-vkSetLocalDimmingAMD-swapChain-parameter",
22435 "text": " <code>swapChain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
22436 },
22437 {
22438 "vuid": "VUID-vkSetLocalDimmingAMD-commonparent",
22439 "text": " Both of <code>device</code>, and <code>swapChain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
22440 },
22441 {
22442 "vuid": "VUID-vkSetLocalDimmingAMD-XXXXX",
22443 "text": " It is only valid to call <a href=\"#vkSetLocalDimmingAMD\">vkSetLocalDimmingAMD</a> if <a href=\"#VkDisplayNativeHdrSurfaceCapabilitiesAMD\">VkDisplayNativeHdrSurfaceCapabilitiesAMD</a>::<code>localDimmingSupport</code> is supported."
22444 }
22445 ]
22446 },
22447 "VkSwapchainCounterCreateInfoEXT": {
22448 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
22449 {
22450 "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244",
22451 "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>."
22452 },
22453 {
22454 "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-sType-sType",
22455 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT</code>"
22456 },
22457 {
22458 "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-parameter",
22459 "text": " <code>surfaceCounters</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> values"
22460 }
22461 ]
22462 },
22463 "vkGetSwapchainCounterEXT": {
22464 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
22465 {
22466 "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-01245",
22467 "text": " One or more present commands on <code>swapchain</code> <strong class=\"purple\">must</strong> have been processed by the presentation engine."
22468 },
22469 {
22470 "vuid": "VUID-vkGetSwapchainCounterEXT-device-parameter",
22471 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22472 },
22473 {
22474 "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-parameter",
22475 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
22476 },
22477 {
22478 "vuid": "VUID-vkGetSwapchainCounterEXT-counter-parameter",
22479 "text": " <code>counter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> value"
22480 },
22481 {
22482 "vuid": "VUID-vkGetSwapchainCounterEXT-pCounterValue-parameter",
22483 "text": " <code>pCounterValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
22484 },
22485 {
22486 "vuid": "VUID-vkGetSwapchainCounterEXT-commonparent",
22487 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
22488 }
22489 ]
22490 },
22491 "vkDestroySwapchainKHR": {
22492 "(VK_KHR_surface)+(VK_KHR_swapchain)": [
22493 {
22494 "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01282",
22495 "text": " All uses of presentable images acquired from <code>swapchain</code> <strong class=\"purple\">must</strong> have completed execution"
22496 },
22497 {
22498 "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01283",
22499 "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"
22500 },
22501 {
22502 "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01284",
22503 "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>"
22504 },
22505 {
22506 "vuid": "VUID-vkDestroySwapchainKHR-device-parameter",
22507 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22508 },
22509 {
22510 "vuid": "VUID-vkDestroySwapchainKHR-swapchain-parameter",
22511 "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
22512 },
22513 {
22514 "vuid": "VUID-vkDestroySwapchainKHR-pAllocator-parameter",
22515 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
22516 },
22517 {
22518 "vuid": "VUID-vkDestroySwapchainKHR-commonparent",
22519 "text": " Both of <code>device</code>, and <code>swapchain</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
22520 }
22521 ]
22522 },
22523 "vkCreateSharedSwapchainsKHR": {
22524 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
22525 {
22526 "vuid": "VUID-vkCreateSharedSwapchainsKHR-device-parameter",
22527 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22528 },
22529 {
22530 "vuid": "VUID-vkCreateSharedSwapchainsKHR-pCreateInfos-parameter",
22531 "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkSwapchainCreateInfoKHR</code> structures"
22532 },
22533 {
22534 "vuid": "VUID-vkCreateSharedSwapchainsKHR-pAllocator-parameter",
22535 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
22536 },
22537 {
22538 "vuid": "VUID-vkCreateSharedSwapchainsKHR-pSwapchains-parameter",
22539 "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>VkSwapchainKHR</code> handles"
22540 },
22541 {
22542 "vuid": "VUID-vkCreateSharedSwapchainsKHR-swapchainCount-arraylength",
22543 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
22544 }
22545 ]
22546 },
22547 "vkGetSwapchainImagesKHR": {
22548 "(VK_KHR_surface)+(VK_KHR_swapchain)": [
22549 {
22550 "vuid": "VUID-vkGetSwapchainImagesKHR-device-parameter",
22551 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22552 },
22553 {
22554 "vuid": "VUID-vkGetSwapchainImagesKHR-swapchain-parameter",
22555 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
22556 },
22557 {
22558 "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImageCount-parameter",
22559 "text": " <code>pSwapchainImageCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
22560 },
22561 {
22562 "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImages-parameter",
22563 "text": " If the value referenced by <code>pSwapchainImageCount</code> is not <code>0</code>, and <code>pSwapchainImages</code> is not <code>NULL</code>, <code>pSwapchainImages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSwapchainImageCount</code> <code>VkImage</code> handles"
22564 },
22565 {
22566 "vuid": "VUID-vkGetSwapchainImagesKHR-commonparent",
22567 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
22568 }
22569 ]
22570 },
22571 "vkAcquireNextImageKHR": {
22572 "(VK_KHR_surface)+(VK_KHR_swapchain)": [
22573 {
22574 "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01285",
22575 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
22576 },
22577 {
22578 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01286",
22579 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled"
22580 },
22581 {
22582 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01779",
22583 "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"
22584 },
22585 {
22586 "vuid": "VUID-vkAcquireNextImageKHR-fence-01287",
22587 "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"
22588 },
22589 {
22590 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01780",
22591 "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>"
22592 },
22593 {
22594 "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01802",
22595 "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>"
22596 },
22597 {
22598 "vuid": "VUID-vkAcquireNextImageKHR-device-parameter",
22599 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22600 },
22601 {
22602 "vuid": "VUID-vkAcquireNextImageKHR-swapchain-parameter",
22603 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
22604 },
22605 {
22606 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parameter",
22607 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
22608 },
22609 {
22610 "vuid": "VUID-vkAcquireNextImageKHR-fence-parameter",
22611 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
22612 },
22613 {
22614 "vuid": "VUID-vkAcquireNextImageKHR-pImageIndex-parameter",
22615 "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
22616 },
22617 {
22618 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parent",
22619 "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>"
22620 },
22621 {
22622 "vuid": "VUID-vkAcquireNextImageKHR-fence-parent",
22623 "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>"
22624 },
22625 {
22626 "vuid": "VUID-vkAcquireNextImageKHR-commonparent",
22627 "text": " Both of <code>device</code>, and <code>swapchain</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
22628 }
22629 ]
22630 },
22631 "vkAcquireNextImage2KHR": {
22632 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
22633 {
22634 "vuid": "VUID-vkAcquireNextImage2KHR-swapchain-01803",
22635 "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>"
22636 },
22637 {
22638 "vuid": "VUID-vkAcquireNextImage2KHR-device-parameter",
22639 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22640 },
22641 {
22642 "vuid": "VUID-vkAcquireNextImage2KHR-pAcquireInfo-parameter",
22643 "text": " <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAcquireNextImageInfoKHR</code> structure"
22644 },
22645 {
22646 "vuid": "VUID-vkAcquireNextImage2KHR-pImageIndex-parameter",
22647 "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
22648 }
22649 ]
22650 },
22651 "VkAcquireNextImageInfoKHR": {
22652 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
22653 {
22654 "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-01675",
22655 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
22656 },
22657 {
22658 "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01288",
22659 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled"
22660 },
22661 {
22662 "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01781",
22663 "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"
22664 },
22665 {
22666 "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-01289",
22667 "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"
22668 },
22669 {
22670 "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01782",
22671 "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>"
22672 },
22673 {
22674 "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01290",
22675 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask"
22676 },
22677 {
22678 "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01291",
22679 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
22680 },
22681 {
22682 "vuid": "VUID-VkAcquireNextImageInfoKHR-sType-sType",
22683 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR</code>"
22684 },
22685 {
22686 "vuid": "VUID-VkAcquireNextImageInfoKHR-pNext-pNext",
22687 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
22688 },
22689 {
22690 "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-parameter",
22691 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
22692 },
22693 {
22694 "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-parameter",
22695 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
22696 },
22697 {
22698 "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-parameter",
22699 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
22700 },
22701 {
22702 "vuid": "VUID-VkAcquireNextImageInfoKHR-commonparent",
22703 "text": " Each of <code>fence</code>, <code>semaphore</code>, and <code>swapchain</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
22704 }
22705 ]
22706 },
22707 "vkQueuePresentKHR": {
22708 "(VK_KHR_surface)+(VK_KHR_swapchain)": [
22709 {
22710 "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01292",
22711 "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>"
22712 },
22713 {
22714 "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01294",
22715 "text": " When a semaphore unsignal operation defined by the elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> executes on <code>queue</code>, there <strong class=\"purple\">must</strong> be no other queues waiting on the same semaphore."
22716 },
22717 {
22718 "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01295",
22719 "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."
22720 },
22721 {
22722 "vuid": "VUID-vkQueuePresentKHR-queue-parameter",
22723 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
22724 },
22725 {
22726 "vuid": "VUID-vkQueuePresentKHR-pPresentInfo-parameter",
22727 "text": " <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPresentInfoKHR</code> structure"
22728 }
22729 ],
22730 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
22731 {
22732 "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01293",
22733 "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"
22734 }
22735 ]
22736 },
22737 "VkPresentInfoKHR": {
22738 "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [
22739 {
22740 "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01296",
22741 "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>"
22742 }
22743 ],
22744 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
22745 {
22746 "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01430",
22747 "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>"
22748 }
22749 ],
22750 "(VK_KHR_surface)+(VK_KHR_swapchain)": [
22751 {
22752 "vuid": "VUID-VkPresentInfoKHR-sType-sType",
22753 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_INFO_KHR</code>"
22754 },
22755 {
22756 "vuid": "VUID-VkPresentInfoKHR-pNext-pNext",
22757 "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>"
22758 },
22759 {
22760 "vuid": "VUID-VkPresentInfoKHR-sType-unique",
22761 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
22762 },
22763 {
22764 "vuid": "VUID-VkPresentInfoKHR-pWaitSemaphores-parameter",
22765 "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
22766 },
22767 {
22768 "vuid": "VUID-VkPresentInfoKHR-pSwapchains-parameter",
22769 "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkSwapchainKHR</code> handles"
22770 },
22771 {
22772 "vuid": "VUID-VkPresentInfoKHR-pImageIndices-parameter",
22773 "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"
22774 },
22775 {
22776 "vuid": "VUID-VkPresentInfoKHR-pResults-parameter",
22777 "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"
22778 },
22779 {
22780 "vuid": "VUID-VkPresentInfoKHR-swapchainCount-arraylength",
22781 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
22782 },
22783 {
22784 "vuid": "VUID-VkPresentInfoKHR-commonparent",
22785 "text": " Both of the elements of <code>pSwapchains</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
22786 }
22787 ]
22788 },
22789 "VkPresentRegionsKHR": {
22790 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
22791 {
22792 "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-01260",
22793 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkPresentInfoKHR</code>::<code>swapchainCount</code>, where <code>VkPresentInfoKHR</code> is in the <code>pNext</code> chain of this <code>VkPresentRegionsKHR</code> structure"
22794 },
22795 {
22796 "vuid": "VUID-VkPresentRegionsKHR-sType-sType",
22797 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR</code>"
22798 },
22799 {
22800 "vuid": "VUID-VkPresentRegionsKHR-pRegions-parameter",
22801 "text": " If <code>pRegions</code> is not <code>NULL</code>, <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkPresentRegionKHR</code> structures"
22802 },
22803 {
22804 "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-arraylength",
22805 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
22806 }
22807 ]
22808 },
22809 "VkPresentRegionKHR": {
22810 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
22811 {
22812 "vuid": "VUID-VkPresentRegionKHR-pRectangles-parameter",
22813 "text": " If <code>rectangleCount</code> is not <code>0</code>, and <code>pRectangles</code> is not <code>NULL</code>, <code>pRectangles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rectangleCount</code> valid <code>VkRectLayerKHR</code> structures"
22814 }
22815 ]
22816 },
22817 "VkRectLayerKHR": {
22818 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
22819 {
22820 "vuid": "VUID-VkRectLayerKHR-offset-01261",
22821 "text": " The sum of <code>offset</code> and <code>extent</code> <strong class=\"purple\">must</strong> be no greater than the <code>imageExtent</code> member of the <code>VkSwapchainCreateInfoKHR</code> structure given to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>."
22822 },
22823 {
22824 "vuid": "VUID-VkRectLayerKHR-layer-01262",
22825 "text": " <code>layer</code> <strong class=\"purple\">must</strong> be less than <code>imageArrayLayers</code> member of the <code>VkSwapchainCreateInfoKHR</code> structure given to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>."
22826 }
22827 ]
22828 },
22829 "VkDisplayPresentInfoKHR": {
22830 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
22831 {
22832 "vuid": "VUID-VkDisplayPresentInfoKHR-srcRect-01257",
22833 "text": " <code>srcRect</code> <strong class=\"purple\">must</strong> specify a rectangular region that is a subset of the image being presented"
22834 },
22835 {
22836 "vuid": "VUID-VkDisplayPresentInfoKHR-dstRect-01258",
22837 "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"
22838 },
22839 {
22840 "vuid": "VUID-VkDisplayPresentInfoKHR-persistentContent-01259",
22841 "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>"
22842 },
22843 {
22844 "vuid": "VUID-VkDisplayPresentInfoKHR-sType-sType",
22845 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR</code>"
22846 }
22847 ]
22848 },
22849 "VkDeviceGroupPresentInfoKHR": {
22850 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
22851 {
22852 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-swapchainCount-01297",
22853 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> equal <code>0</code> or <a href=\"#VkPresentInfoKHR\">VkPresentInfoKHR</a>::<code>swapchainCount</code>"
22854 },
22855 {
22856 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01298",
22857 "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"
22858 },
22859 {
22860 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01299",
22861 "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>."
22862 },
22863 {
22864 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01300",
22865 "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>"
22866 },
22867 {
22868 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01301",
22869 "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"
22870 },
22871 {
22872 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-01302",
22873 "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"
22874 },
22875 {
22876 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01303",
22877 "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>"
22878 },
22879 {
22880 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-sType-sType",
22881 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR</code>"
22882 },
22883 {
22884 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter",
22885 "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"
22886 },
22887 {
22888 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-parameter",
22889 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> value"
22890 }
22891 ]
22892 },
22893 "VkPresentTimesInfoGOOGLE": {
22894 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
22895 {
22896 "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-01247",
22897 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkPresentInfoKHR</code>::<code>swapchainCount</code>, where <code>VkPresentInfoKHR</code> is in the <code>pNext</code> chain of this <code>VkPresentTimesInfoGOOGLE</code> structure."
22898 },
22899 {
22900 "vuid": "VUID-VkPresentTimesInfoGOOGLE-sType-sType",
22901 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE</code>"
22902 },
22903 {
22904 "vuid": "VUID-VkPresentTimesInfoGOOGLE-pTimes-parameter",
22905 "text": " If <code>pTimes</code> is not <code>NULL</code>, <code>pTimes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>VkPresentTimeGOOGLE</code> structures"
22906 },
22907 {
22908 "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-arraylength",
22909 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
22910 }
22911 ]
22912 },
22913 "VkPresentFrameTokenGGP": {
22914 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GGP_frame_token)": [
22915 {
22916 "vuid": "VUID-VkPresentFrameTokenGGP-frameToken-02680",
22917 "text": " <code>frameToken</code> <strong class=\"purple\">must</strong> be a valid <code>GgpFrameToken</code>"
22918 },
22919 {
22920 "vuid": "VUID-VkPresentFrameTokenGGP-sType-sType",
22921 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP</code>"
22922 }
22923 ]
22924 },
22925 "vkSetHdrMetadataEXT": {
22926 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [
22927 {
22928 "vuid": "VUID-vkSetHdrMetadataEXT-device-parameter",
22929 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
22930 },
22931 {
22932 "vuid": "VUID-vkSetHdrMetadataEXT-pSwapchains-parameter",
22933 "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkSwapchainKHR</code> handles"
22934 },
22935 {
22936 "vuid": "VUID-vkSetHdrMetadataEXT-pMetadata-parameter",
22937 "text": " <code>pMetadata</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkHdrMetadataEXT</code> structures"
22938 },
22939 {
22940 "vuid": "VUID-vkSetHdrMetadataEXT-swapchainCount-arraylength",
22941 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
22942 },
22943 {
22944 "vuid": "VUID-vkSetHdrMetadataEXT-commonparent",
22945 "text": " Both of <code>device</code>, and the elements of <code>pSwapchains</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
22946 }
22947 ]
22948 },
22949 "VkHdrMetadataEXT": {
22950 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [
22951 {
22952 "vuid": "VUID-VkHdrMetadataEXT-sType-sType",
22953 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_HDR_METADATA_EXT</code>"
22954 },
22955 {
22956 "vuid": "VUID-VkHdrMetadataEXT-pNext-pNext",
22957 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
22958 }
22959 ]
22960 },
22961 "vkCmdTraceRaysNV": {
22962 "(VK_NV_ray_tracing)": [
22963 {
22964 "vuid": "VUID-vkCmdTraceRaysNV-None-02690",
22965 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
22966 },
22967 {
22968 "vuid": "VUID-vkCmdTraceRaysNV-None-02691",
22969 "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>"
22970 },
22971 {
22972 "vuid": "VUID-vkCmdTraceRaysNV-None-02697",
22973 "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>"
22974 },
22975 {
22976 "vuid": "VUID-vkCmdTraceRaysNV-None-02698",
22977 "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>"
22978 },
22979 {
22980 "vuid": "VUID-vkCmdTraceRaysNV-None-02699",
22981 "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"
22982 },
22983 {
22984 "vuid": "VUID-vkCmdTraceRaysNV-None-02700",
22985 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command"
22986 },
22987 {
22988 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02701",
22989 "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>"
22990 },
22991 {
22992 "vuid": "VUID-vkCmdTraceRaysNV-None-02702",
22993 "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"
22994 },
22995 {
22996 "vuid": "VUID-vkCmdTraceRaysNV-None-02703",
22997 "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"
22998 },
22999 {
23000 "vuid": "VUID-vkCmdTraceRaysNV-None-02704",
23001 "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"
23002 },
23003 {
23004 "vuid": "VUID-vkCmdTraceRaysNV-None-02705",
23005 "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"
23006 },
23007 {
23008 "vuid": "VUID-vkCmdTraceRaysNV-None-02706",
23009 "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"
23010 },
23011 {
23012 "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455",
23013 "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>raygenShaderBindingTableBuffer</code>"
23014 },
23015 {
23016 "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456",
23017 "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
23018 },
23019 {
23020 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457",
23021 "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>missShaderBindingTableBuffer</code>"
23022 },
23023 {
23024 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458",
23025 "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
23026 },
23027 {
23028 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459",
23029 "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>hitShaderBindingTableBuffer</code>"
23030 },
23031 {
23032 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460",
23033 "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
23034 },
23035 {
23036 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461",
23037 "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>callableShaderBindingTableBuffer</code>"
23038 },
23039 {
23040 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462",
23041 "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
23042 },
23043 {
23044 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463",
23045 "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
23046 },
23047 {
23048 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464",
23049 "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
23050 },
23051 {
23052 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465",
23053 "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
23054 },
23055 {
23056 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466",
23057 "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be a less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
23058 },
23059 {
23060 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467",
23061 "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be a less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
23062 },
23063 {
23064 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468",
23065 "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be a less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
23066 },
23067 {
23068 "vuid": "VUID-vkCmdTraceRaysNV-width-02469",
23069 "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
23070 },
23071 {
23072 "vuid": "VUID-vkCmdTraceRaysNV-height-02470",
23073 "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
23074 },
23075 {
23076 "vuid": "VUID-vkCmdTraceRaysNV-depth-02471",
23077 "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
23078 },
23079 {
23080 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-parameter",
23081 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
23082 },
23083 {
23084 "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter",
23085 "text": " <code>raygenShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
23086 },
23087 {
23088 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter",
23089 "text": " If <code>missShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>missShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
23090 },
23091 {
23092 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter",
23093 "text": " If <code>hitShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>hitShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
23094 },
23095 {
23096 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter",
23097 "text": " If <code>callableShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>callableShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
23098 },
23099 {
23100 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-recording",
23101 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23102 },
23103 {
23104 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-cmdpool",
23105 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
23106 },
23107 {
23108 "vuid": "VUID-vkCmdTraceRaysNV-renderpass",
23109 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
23110 },
23111 {
23112 "vuid": "VUID-vkCmdTraceRaysNV-commonparent",
23113 "text": " Each of <code>callableShaderBindingTableBuffer</code>, <code>commandBuffer</code>, <code>hitShaderBindingTableBuffer</code>, <code>missShaderBindingTableBuffer</code>, and <code>raygenShaderBindingTableBuffer</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
23114 }
23115 ],
23116 "(VK_NV_ray_tracing)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
23117 {
23118 "vuid": "VUID-vkCmdTraceRaysNV-None-02692",
23119 "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>"
23120 }
23121 ],
23122 "(VK_NV_ray_tracing)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
23123 {
23124 "vuid": "VUID-vkCmdTraceRaysNV-None-02693",
23125 "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>"
23126 }
23127 ],
23128 "(VK_NV_ray_tracing)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
23129 {
23130 "vuid": "VUID-vkCmdTraceRaysNV-filterCubic-02694",
23131 "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>"
23132 },
23133 {
23134 "vuid": "VUID-vkCmdTraceRaysNV-filterCubicMinmax-02695",
23135 "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_EXT</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX_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 together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
23136 }
23137 ],
23138 "(VK_NV_ray_tracing)+(VK_NV_corner_sampled_image)": [
23139 {
23140 "vuid": "VUID-vkCmdTraceRaysNV-flags-02696",
23141 "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>."
23142 }
23143 ],
23144 "(VK_NV_ray_tracing)+(VK_VERSION_1_1)": [
23145 {
23146 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02707",
23147 "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"
23148 },
23149 {
23150 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02712",
23151 "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"
23152 },
23153 {
23154 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02713",
23155 "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"
23156 }
23157 ]
23158 },
23159 "vkCmdBuildAccelerationStructureNV": {
23160 "(VK_NV_ray_tracing)": [
23161 {
23162 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241",
23163 "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>"
23164 },
23165 {
23166 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-02488",
23167 "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."
23168 },
23169 {
23170 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02489",
23171 "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>"
23172 },
23173 {
23174 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02490",
23175 "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>"
23176 },
23177 {
23178 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02491",
23179 "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>"
23180 },
23181 {
23182 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02492",
23183 "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>"
23184 },
23185 {
23186 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter",
23187 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
23188 },
23189 {
23190 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter",
23191 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAccelerationStructureInfoNV</code> structure"
23192 },
23193 {
23194 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter",
23195 "text": " If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
23196 },
23197 {
23198 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-parameter",
23199 "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
23200 },
23201 {
23202 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-src-parameter",
23203 "text": " If <code>src</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>src</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
23204 },
23205 {
23206 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter",
23207 "text": " <code>scratch</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
23208 },
23209 {
23210 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording",
23211 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23212 },
23213 {
23214 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool",
23215 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
23216 },
23217 {
23218 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-renderpass",
23219 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
23220 },
23221 {
23222 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commonparent",
23223 "text": " Each of <code>commandBuffer</code>, <code>dst</code>, <code>instanceData</code>, <code>scratch</code>, and <code>src</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
23224 }
23225 ]
23226 },
23227 "vkCmdWriteAccelerationStructuresPropertiesNV": {
23228 "(VK_NV_ray_tracing)": [
23229 {
23230 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-02242",
23231 "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>"
23232 },
23233 {
23234 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-02493",
23235 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> matching <code>queryType</code>"
23236 },
23237 {
23238 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-02494",
23239 "text": " The queries identified by <code>queryPool</code> and <code>firstQuery</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>"
23240 },
23241 {
23242 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructures-02495",
23243 "text": " All acceleration structures in <code>accelerationStructures</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>"
23244 },
23245 {
23246 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter",
23247 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
23248 },
23249 {
23250 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-parameter",
23251 "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <code>VkAccelerationStructureNV</code> handles"
23252 },
23253 {
23254 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-parameter",
23255 "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
23256 },
23257 {
23258 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-parameter",
23259 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
23260 },
23261 {
23262 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-recording",
23263 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23264 },
23265 {
23266 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-cmdpool",
23267 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
23268 },
23269 {
23270 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-renderpass",
23271 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
23272 },
23273 {
23274 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructureCount-arraylength",
23275 "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
23276 },
23277 {
23278 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commonparent",
23279 "text": " Each of <code>commandBuffer</code>, <code>queryPool</code>, and the elements of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
23280 }
23281 ]
23282 },
23283 "vkCmdCopyAccelerationStructureNV": {
23284 "(VK_NV_ray_tracing)": [
23285 {
23286 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-02496",
23287 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV</code> or <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV</code>"
23288 },
23289 {
23290 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-02497",
23291 "text": " <code>src</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV</code> if <code>mode</code> is <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV</code>"
23292 },
23293 {
23294 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter",
23295 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
23296 },
23297 {
23298 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-dst-parameter",
23299 "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
23300 },
23301 {
23302 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-parameter",
23303 "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
23304 },
23305 {
23306 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-parameter",
23307 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeNV\">VkCopyAccelerationStructureModeNV</a> value"
23308 },
23309 {
23310 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording",
23311 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
23312 },
23313 {
23314 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool",
23315 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
23316 },
23317 {
23318 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-renderpass",
23319 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
23320 },
23321 {
23322 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commonparent",
23323 "text": " Each of <code>commandBuffer</code>, <code>dst</code>, and <code>src</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
23324 }
23325 ]
23326 },
23327 "vkEnumerateInstanceLayerProperties": {
23328 "core": [
23329 {
23330 "vuid": "VUID-vkEnumerateInstanceLayerProperties-pPropertyCount-parameter",
23331 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
23332 },
23333 {
23334 "vuid": "VUID-vkEnumerateInstanceLayerProperties-pProperties-parameter",
23335 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkLayerProperties</code> structures"
23336 }
23337 ]
23338 },
23339 "vkEnumerateDeviceLayerProperties": {
23340 "core": [
23341 {
23342 "vuid": "VUID-vkEnumerateDeviceLayerProperties-physicalDevice-parameter",
23343 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
23344 },
23345 {
23346 "vuid": "VUID-vkEnumerateDeviceLayerProperties-pPropertyCount-parameter",
23347 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
23348 },
23349 {
23350 "vuid": "VUID-vkEnumerateDeviceLayerProperties-pProperties-parameter",
23351 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkLayerProperties</code> structures"
23352 }
23353 ]
23354 },
23355 "vkEnumerateInstanceExtensionProperties": {
23356 "core": [
23357 {
23358 "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pLayerName-parameter",
23359 "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"
23360 },
23361 {
23362 "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pPropertyCount-parameter",
23363 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
23364 },
23365 {
23366 "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pProperties-parameter",
23367 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkExtensionProperties</code> structures"
23368 }
23369 ]
23370 },
23371 "vkEnumerateDeviceExtensionProperties": {
23372 "core": [
23373 {
23374 "vuid": "VUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter",
23375 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
23376 },
23377 {
23378 "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pLayerName-parameter",
23379 "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"
23380 },
23381 {
23382 "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pPropertyCount-parameter",
23383 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
23384 },
23385 {
23386 "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pProperties-parameter",
23387 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkExtensionProperties</code> structures"
23388 }
23389 ]
23390 },
23391 "vkGetPhysicalDeviceFeatures": {
23392 "core": [
23393 {
23394 "vuid": "VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter",
23395 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
23396 },
23397 {
23398 "vuid": "VUID-vkGetPhysicalDeviceFeatures-pFeatures-parameter",
23399 "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceFeatures</code> structure"
23400 }
23401 ]
23402 },
23403 "vkGetPhysicalDeviceFeatures2": {
23404 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
23405 {
23406 "vuid": "VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter",
23407 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
23408 },
23409 {
23410 "vuid": "VUID-vkGetPhysicalDeviceFeatures2-pFeatures-parameter",
23411 "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceFeatures2</code> structure"
23412 }
23413 ]
23414 },
23415 "VkPhysicalDeviceFeatures2": {
23416 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
23417 {
23418 "vuid": "VUID-VkPhysicalDeviceFeatures2-sType-sType",
23419 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2</code>"
23420 }
23421 ]
23422 },
23423 "VkPhysicalDeviceVariablePointersFeatures": {
23424 "(VK_VERSION_1_1,VK_KHR_variable_pointers)": [
23425 {
23426 "vuid": "VUID-VkPhysicalDeviceVariablePointersFeatures-variablePointers-01431",
23427 "text": " If <code>variablePointers</code> is enabled then <code>variablePointersStorageBuffer</code> <strong class=\"purple\">must</strong> also be enabled."
23428 },
23429 {
23430 "vuid": "VUID-VkPhysicalDeviceVariablePointersFeatures-sType-sType",
23431 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES</code>"
23432 }
23433 ]
23434 },
23435 "VkPhysicalDeviceMultiviewFeatures": {
23436 "(VK_VERSION_1_1,VK_KHR_multiview)": [
23437 {
23438 "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580",
23439 "text": " If <code>multiviewGeometryShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled."
23440 },
23441 {
23442 "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581",
23443 "text": " If <code>multiviewTessellationShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled."
23444 },
23445 {
23446 "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-sType-sType",
23447 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES</code>"
23448 }
23449 ]
23450 },
23451 "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR": {
23452 "(VK_KHR_shader_atomic_int64)": [
23453 {
23454 "vuid": "VUID-VkPhysicalDeviceShaderAtomicInt64FeaturesKHR-sType-sType",
23455 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR</code>"
23456 }
23457 ]
23458 },
23459 "VkPhysicalDevice8BitStorageFeaturesKHR": {
23460 "(VK_KHR_8bit_storage)": [
23461 {
23462 "vuid": "VUID-VkPhysicalDevice8BitStorageFeaturesKHR-sType-sType",
23463 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR</code>"
23464 }
23465 ]
23466 },
23467 "VkPhysicalDevice16BitStorageFeatures": {
23468 "(VK_VERSION_1_1,VK_KHR_16bit_storage)": [
23469 {
23470 "vuid": "VUID-VkPhysicalDevice16BitStorageFeatures-sType-sType",
23471 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES</code>"
23472 }
23473 ]
23474 },
23475 "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR": {
23476 "(VK_KHR_shader_float16_int8)": [
23477 {
23478 "vuid": "VUID-VkPhysicalDeviceShaderFloat16Int8FeaturesKHR-sType-sType",
23479 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR</code>"
23480 }
23481 ]
23482 },
23483 "VkPhysicalDeviceSamplerYcbcrConversionFeatures": {
23484 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
23485 {
23486 "vuid": "VUID-VkPhysicalDeviceSamplerYcbcrConversionFeatures-sType-sType",
23487 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES</code>"
23488 }
23489 ]
23490 },
23491 "VkPhysicalDeviceProtectedMemoryFeatures": {
23492 "(VK_VERSION_1_1)": [
23493 {
23494 "vuid": "VUID-VkPhysicalDeviceProtectedMemoryFeatures-sType-sType",
23495 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES</code>"
23496 }
23497 ]
23498 },
23499 "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT": {
23500 "(VK_EXT_blend_operation_advanced)": [
23501 {
23502 "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT-sType-sType",
23503 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT</code>"
23504 }
23505 ]
23506 },
23507 "VkPhysicalDeviceConditionalRenderingFeaturesEXT": {
23508 "(VK_EXT_conditional_rendering)": [
23509 {
23510 "vuid": "VUID-VkPhysicalDeviceConditionalRenderingFeaturesEXT-sType-sType",
23511 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT</code>"
23512 }
23513 ]
23514 },
23515 "VkPhysicalDeviceShaderDrawParametersFeatures": {
23516 "(VK_VERSION_1_1)": [
23517 {
23518 "vuid": "VUID-VkPhysicalDeviceShaderDrawParametersFeatures-sType-sType",
23519 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES</code>"
23520 }
23521 ]
23522 },
23523 "VkPhysicalDeviceMeshShaderFeaturesNV": {
23524 "(VK_NV_mesh_shader)": [
23525 {
23526 "vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesNV-sType-sType",
23527 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV</code>"
23528 }
23529 ]
23530 },
23531 "VkPhysicalDeviceDescriptorIndexingFeaturesEXT": {
23532 "(VK_EXT_descriptor_indexing)": [
23533 {
23534 "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingFeaturesEXT-sType-sType",
23535 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT</code>"
23536 }
23537 ]
23538 },
23539 "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT": {
23540 "(VK_EXT_vertex_attribute_divisor)": [
23541 {
23542 "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT-sType-sType",
23543 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT</code>"
23544 }
23545 ]
23546 },
23547 "VkPhysicalDeviceASTCDecodeFeaturesEXT": {
23548 "(VK_EXT_astc_decode_mode)": [
23549 {
23550 "vuid": "VUID-VkPhysicalDeviceASTCDecodeFeaturesEXT-sType-sType",
23551 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT</code>"
23552 }
23553 ]
23554 },
23555 "VkPhysicalDeviceTransformFeedbackFeaturesEXT": {
23556 "(VK_EXT_transform_feedback)": [
23557 {
23558 "vuid": "VUID-VkPhysicalDeviceTransformFeedbackFeaturesEXT-sType-sType",
23559 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT</code>"
23560 }
23561 ]
23562 },
23563 "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR": {
23564 "(VK_KHR_vulkan_memory_model)": [
23565 {
23566 "vuid": "VUID-VkPhysicalDeviceVulkanMemoryModelFeaturesKHR-sType-sType",
23567 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR</code>"
23568 }
23569 ]
23570 },
23571 "VkPhysicalDeviceInlineUniformBlockFeaturesEXT": {
23572 "(VK_EXT_inline_uniform_block)": [
23573 {
23574 "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockFeaturesEXT-sType-sType",
23575 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT</code>"
23576 }
23577 ]
23578 },
23579 "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV": {
23580 "(VK_NV_representative_fragment_test)": [
23581 {
23582 "vuid": "VUID-VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV-sType-sType",
23583 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV</code>"
23584 }
23585 ]
23586 },
23587 "VkPhysicalDeviceExclusiveScissorFeaturesNV": {
23588 "(VK_NV_scissor_exclusive)": [
23589 {
23590 "vuid": "VUID-VkPhysicalDeviceExclusiveScissorFeaturesNV-sType-sType",
23591 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV</code>"
23592 }
23593 ]
23594 },
23595 "VkPhysicalDeviceCornerSampledImageFeaturesNV": {
23596 "(VK_NV_corner_sampled_image)": [
23597 {
23598 "vuid": "VUID-VkPhysicalDeviceCornerSampledImageFeaturesNV-sType-sType",
23599 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV</code>"
23600 }
23601 ]
23602 },
23603 "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV": {
23604 "(VK_NV_compute_shader_derivatives)": [
23605 {
23606 "vuid": "VUID-VkPhysicalDeviceComputeShaderDerivativesFeaturesNV-sType-sType",
23607 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV</code>"
23608 }
23609 ]
23610 },
23611 "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV": {
23612 "(VK_NV_fragment_shader_barycentric)": [
23613 {
23614 "vuid": "VUID-VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV-sType-sType",
23615 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV</code>"
23616 }
23617 ]
23618 },
23619 "VkPhysicalDeviceShaderImageFootprintFeaturesNV": {
23620 "(VK_NV_shader_image_footprint)": [
23621 {
23622 "vuid": "VUID-VkPhysicalDeviceShaderImageFootprintFeaturesNV-sType-sType",
23623 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV</code>"
23624 }
23625 ]
23626 },
23627 "VkPhysicalDeviceShadingRateImageFeaturesNV": {
23628 "(VK_NV_shading_rate_image)": [
23629 {
23630 "vuid": "VUID-VkPhysicalDeviceShadingRateImageFeaturesNV-sType-sType",
23631 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV</code>"
23632 }
23633 ]
23634 },
23635 "VkPhysicalDeviceFragmentDensityMapFeaturesEXT": {
23636 "(VK_EXT_fragment_density_map)": [
23637 {
23638 "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapFeaturesEXT-sType-sType",
23639 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT</code>"
23640 }
23641 ]
23642 },
23643 "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT": {
23644 "(VK_EXT_scalar_block_layout)": [
23645 {
23646 "vuid": "VUID-VkPhysicalDeviceScalarBlockLayoutFeaturesEXT-sType-sType",
23647 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT</code>"
23648 }
23649 ]
23650 },
23651 "VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR": {
23652 "(VK_KHR_uniform_buffer_standard_layout)": [
23653 {
23654 "vuid": "VUID-VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR-sType-sType",
23655 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR</code>"
23656 }
23657 ]
23658 },
23659 "VkPhysicalDeviceDepthClipEnableFeaturesEXT": {
23660 "(VK_EXT_depth_clip_enable)": [
23661 {
23662 "vuid": "VUID-VkPhysicalDeviceDepthClipEnableFeaturesEXT-sType-sType",
23663 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT</code>"
23664 }
23665 ]
23666 },
23667 "VkPhysicalDeviceMemoryPriorityFeaturesEXT": {
23668 "(VK_EXT_memory_priority)": [
23669 {
23670 "vuid": "VUID-VkPhysicalDeviceMemoryPriorityFeaturesEXT-sType-sType",
23671 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT</code>"
23672 }
23673 ]
23674 },
23675 "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT": {
23676 "(VK_EXT_buffer_device_address)": [
23677 {
23678 "vuid": "VUID-VkPhysicalDeviceBufferDeviceAddressFeaturesEXT-sType-sType",
23679 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT</code>"
23680 }
23681 ]
23682 },
23683 "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV": {
23684 "(VK_NV_dedicated_allocation_image_aliasing)": [
23685 {
23686 "vuid": "VUID-VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV-sType-sType",
23687 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV</code>"
23688 }
23689 ]
23690 },
23691 "VkPhysicalDeviceImagelessFramebufferFeaturesKHR": {
23692 "(VK_KHR_imageless_framebuffer)": [
23693 {
23694 "vuid": "VUID-VkPhysicalDeviceImagelessFramebufferFeaturesKHR-sType-sType",
23695 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR</code>"
23696 }
23697 ]
23698 },
23699 "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT": {
23700 "(VK_EXT_fragment_shader_interlock)": [
23701 {
23702 "vuid": "VUID-VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT-sType-sType",
23703 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT</code>"
23704 }
23705 ]
23706 },
23707 "VkPhysicalDeviceCooperativeMatrixFeaturesNV": {
23708 "(VK_NV_cooperative_matrix)": [
23709 {
23710 "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixFeaturesNV-sType-sType",
23711 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV</code>"
23712 }
23713 ]
23714 },
23715 "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT": {
23716 "(VK_EXT_ycbcr_image_arrays)": [
23717 {
23718 "vuid": "VUID-VkPhysicalDeviceYcbcrImageArraysFeaturesEXT-sType-sType",
23719 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT</code>"
23720 }
23721 ]
23722 },
23723 "VkPhysicalDeviceHostQueryResetFeaturesEXT": {
23724 "(VK_EXT_host_query_reset)": [
23725 {
23726 "vuid": "VUID-VkPhysicalDeviceHostQueryResetFeaturesEXT-sType-sType",
23727 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT</code>"
23728 }
23729 ]
23730 },
23731 "VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL": {
23732 "(VK_INTEL_shader_integer_functions2)": [
23733 {
23734 "vuid": "VUID-VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL-sType-sType",
23735 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL</code>"
23736 }
23737 ]
23738 },
23739 "VkPhysicalDeviceCoverageReductionModeFeaturesNV": {
23740 "(VK_NV_coverage_reduction_mode)": [
23741 {
23742 "vuid": "VUID-VkPhysicalDeviceCoverageReductionModeFeaturesNV-sType-sType",
23743 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV</code>"
23744 }
23745 ]
23746 },
23747 "VkPhysicalDeviceIndexTypeUint8FeaturesEXT": {
23748 "(VK_EXT_index_type_uint8)": [
23749 {
23750 "vuid": "VUID-VkPhysicalDeviceIndexTypeUint8FeaturesEXT-sType-sType",
23751 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT</code>"
23752 }
23753 ]
23754 },
23755 "VkPhysicalDeviceShaderSMBuiltinsFeaturesNV": {
23756 "(VK_NV_shader_sm_builtins)": [
23757 {
23758 "vuid": "VUID-VkPhysicalDeviceShaderSMBuiltinsFeaturesNV-sType-sType",
23759 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV</code>"
23760 }
23761 ]
23762 },
23763 "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR": {
23764 "(VK_KHR_pipeline_executable_properties)": [
23765 {
23766 "vuid": "VUID-VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR-sType-sType",
23767 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR</code>"
23768 }
23769 ]
23770 },
23771 "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT": {
23772 "(VK_EXT_shader_demote_to_helper_invocation)": [
23773 {
23774 "vuid": "VUID-VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT-sType-sType",
23775 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT</code>"
23776 }
23777 ]
23778 },
23779 "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT": {
23780 "(VK_EXT_texel_buffer_alignment)": [
23781 {
23782 "vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT-sType-sType",
23783 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT</code>"
23784 }
23785 ]
23786 },
23787 "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT": {
23788 "(VK_EXT_texture_compression_astc_hdr)": [
23789 {
23790 "vuid": "VUID-VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT-sType-sType",
23791 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT</code>"
23792 }
23793 ]
23794 },
23795 "VkPhysicalDeviceLineRasterizationFeaturesEXT": {
23796 "(VK_EXT_line_rasterization)": [
23797 {
23798 "vuid": "VUID-VkPhysicalDeviceLineRasterizationFeaturesEXT-sType-sType",
23799 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT</code>"
23800 }
23801 ]
23802 },
23803 "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT": {
23804 "(VK_EXT_subgroup_size_control)": [
23805 {
23806 "vuid": "VUID-VkPhysicalDeviceSubgroupSizeControlFeaturesEXT-sType-sType",
23807 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT</code>"
23808 }
23809 ]
23810 },
23811 "VkPhysicalDeviceCoherentMemoryFeaturesAMD": {
23812 "(VK_AMD_device_coherent_memory)": [
23813 {
23814 "vuid": "VUID-VkPhysicalDeviceCoherentMemoryFeaturesAMD-sType-sType",
23815 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD</code>"
23816 }
23817 ]
23818 },
23819 "VkPhysicalDevicePushDescriptorPropertiesKHR": {
23820 "(VK_KHR_push_descriptor)": [
23821 {
23822 "vuid": "VUID-VkPhysicalDevicePushDescriptorPropertiesKHR-sType-sType",
23823 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR</code>"
23824 }
23825 ]
23826 },
23827 "VkPhysicalDeviceMultiviewProperties": {
23828 "(VK_VERSION_1_1,VK_KHR_multiview)": [
23829 {
23830 "vuid": "VUID-VkPhysicalDeviceMultiviewProperties-sType-sType",
23831 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES</code>"
23832 }
23833 ]
23834 },
23835 "VkPhysicalDeviceFloatControlsPropertiesKHR": {
23836 "(VK_KHR_shader_float_controls)": [
23837 {
23838 "vuid": "VUID-VkPhysicalDeviceFloatControlsPropertiesKHR-sType-sType",
23839 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR</code>"
23840 }
23841 ]
23842 },
23843 "VkPhysicalDeviceDiscardRectanglePropertiesEXT": {
23844 "(VK_EXT_discard_rectangles)": [
23845 {
23846 "vuid": "VUID-VkPhysicalDeviceDiscardRectanglePropertiesEXT-sType-sType",
23847 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT</code>"
23848 }
23849 ]
23850 },
23851 "VkPhysicalDeviceSampleLocationsPropertiesEXT": {
23852 "(VK_EXT_sample_locations)": [
23853 {
23854 "vuid": "VUID-VkPhysicalDeviceSampleLocationsPropertiesEXT-sType-sType",
23855 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT</code>"
23856 }
23857 ]
23858 },
23859 "VkPhysicalDeviceExternalMemoryHostPropertiesEXT": {
23860 "(VK_EXT_external_memory_host)": [
23861 {
23862 "vuid": "VUID-VkPhysicalDeviceExternalMemoryHostPropertiesEXT-sType-sType",
23863 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT</code>"
23864 }
23865 ]
23866 },
23867 "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX": {
23868 "(VK_NVX_multiview_per_view_attributes)": [
23869 {
23870 "vuid": "VUID-VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX-sType-sType",
23871 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX</code>"
23872 }
23873 ]
23874 },
23875 "VkPhysicalDevicePointClippingProperties": {
23876 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
23877 {
23878 "vuid": "VUID-VkPhysicalDevicePointClippingProperties-sType-sType",
23879 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES</code>"
23880 }
23881 ]
23882 },
23883 "VkPhysicalDeviceSubgroupProperties": {
23884 "(VK_VERSION_1_1)": [
23885 {
23886 "vuid": "VUID-VkPhysicalDeviceSubgroupProperties-sType-sType",
23887 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES</code>"
23888 }
23889 ]
23890 },
23891 "VkPhysicalDeviceSubgroupSizeControlPropertiesEXT": {
23892 "(VK_VERSION_1_1)+(VK_EXT_subgroup_size_control)": [
23893 {
23894 "vuid": "VUID-VkPhysicalDeviceSubgroupSizeControlPropertiesEXT-sType-sType",
23895 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT</code>"
23896 }
23897 ]
23898 },
23899 "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT": {
23900 "(VK_EXT_blend_operation_advanced)": [
23901 {
23902 "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT-sType-sType",
23903 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT</code>"
23904 }
23905 ]
23906 },
23907 "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT": {
23908 "(VK_EXT_vertex_attribute_divisor)": [
23909 {
23910 "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT-sType-sType",
23911 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT</code>"
23912 }
23913 ]
23914 },
23915 "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT": {
23916 "(VK_EXT_sampler_filter_minmax)": [
23917 {
23918 "vuid": "VUID-VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT-sType-sType",
23919 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT</code>"
23920 }
23921 ]
23922 },
23923 "VkPhysicalDeviceProtectedMemoryProperties": {
23924 "(VK_VERSION_1_1)": [
23925 {
23926 "vuid": "VUID-VkPhysicalDeviceProtectedMemoryProperties-sType-sType",
23927 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES</code>"
23928 }
23929 ]
23930 },
23931 "VkPhysicalDeviceMaintenance3Properties": {
23932 "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
23933 {
23934 "vuid": "VUID-VkPhysicalDeviceMaintenance3Properties-sType-sType",
23935 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES</code>"
23936 }
23937 ]
23938 },
23939 "VkPhysicalDeviceMeshShaderPropertiesNV": {
23940 "(VK_NV_mesh_shader)": [
23941 {
23942 "vuid": "VUID-VkPhysicalDeviceMeshShaderPropertiesNV-sType-sType",
23943 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV</code>"
23944 }
23945 ]
23946 },
23947 "VkPhysicalDeviceDescriptorIndexingPropertiesEXT": {
23948 "(VK_EXT_descriptor_indexing)": [
23949 {
23950 "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingPropertiesEXT-sType-sType",
23951 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT</code>"
23952 }
23953 ]
23954 },
23955 "VkPhysicalDeviceInlineUniformBlockPropertiesEXT": {
23956 "(VK_EXT_inline_uniform_block)": [
23957 {
23958 "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockPropertiesEXT-sType-sType",
23959 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT</code>"
23960 }
23961 ]
23962 },
23963 "VkPhysicalDeviceConservativeRasterizationPropertiesEXT": {
23964 "(VK_EXT_conservative_rasterization)": [
23965 {
23966 "vuid": "VUID-VkPhysicalDeviceConservativeRasterizationPropertiesEXT-sType-sType",
23967 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT</code>"
23968 }
23969 ]
23970 },
23971 "VkPhysicalDeviceFragmentDensityMapPropertiesEXT": {
23972 "(VK_EXT_fragment_density_map)": [
23973 {
23974 "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapPropertiesEXT-sType-sType",
23975 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT</code>"
23976 }
23977 ]
23978 },
23979 "VkPhysicalDeviceShaderCorePropertiesAMD": {
23980 "(VK_AMD_shader_core_properties)": [
23981 {
23982 "vuid": "VUID-VkPhysicalDeviceShaderCorePropertiesAMD-sType-sType",
23983 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD</code>"
23984 }
23985 ]
23986 },
23987 "VkPhysicalDeviceShaderCoreProperties2AMD": {
23988 "(VK_AMD_shader_core_properties2)": [
23989 {
23990 "vuid": "VUID-VkPhysicalDeviceShaderCoreProperties2AMD-sType-sType",
23991 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD</code>"
23992 }
23993 ]
23994 },
23995 "VkPhysicalDeviceDepthStencilResolvePropertiesKHR": {
23996 "(VK_KHR_depth_stencil_resolve)": [
23997 {
23998 "vuid": "VUID-VkPhysicalDeviceDepthStencilResolvePropertiesKHR-sType-sType",
23999 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR</code>"
24000 }
24001 ]
24002 },
24003 "VkPhysicalDeviceShadingRateImagePropertiesNV": {
24004 "(VK_NV_shading_rate_image)": [
24005 {
24006 "vuid": "VUID-VkPhysicalDeviceShadingRateImagePropertiesNV-sType-sType",
24007 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV</code>"
24008 }
24009 ]
24010 },
24011 "VkPhysicalDeviceTransformFeedbackPropertiesEXT": {
24012 "(VK_EXT_transform_feedback)": [
24013 {
24014 "vuid": "VUID-VkPhysicalDeviceTransformFeedbackPropertiesEXT-sType-sType",
24015 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT</code>"
24016 }
24017 ]
24018 },
24019 "VkPhysicalDeviceRayTracingPropertiesNV": {
24020 "(VK_NV_ray_tracing)": [
24021 {
24022 "vuid": "VUID-VkPhysicalDeviceRayTracingPropertiesNV-sType-sType",
24023 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV</code>"
24024 }
24025 ]
24026 },
24027 "VkPhysicalDeviceCooperativeMatrixPropertiesNV": {
24028 "(VK_NV_cooperative_matrix)": [
24029 {
24030 "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixPropertiesNV-sType-sType",
24031 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>"
24032 }
24033 ]
24034 },
24035 "VkPhysicalDeviceShaderSMBuiltinsPropertiesNV": {
24036 "(VK_NV_shader_sm_builtins)": [
24037 {
24038 "vuid": "VUID-VkPhysicalDeviceShaderSMBuiltinsPropertiesNV-sType-sType",
24039 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV</code>"
24040 }
24041 ]
24042 },
24043 "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT": {
24044 "(VK_EXT_texel_buffer_alignment)": [
24045 {
24046 "vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT-sType-sType",
24047 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT</code>"
24048 }
24049 ]
24050 },
24051 "VkPhysicalDeviceLineRasterizationPropertiesEXT": {
24052 "(VK_EXT_line_rasterization)": [
24053 {
24054 "vuid": "VUID-VkPhysicalDeviceLineRasterizationPropertiesEXT-sType-sType",
24055 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT</code>"
24056 }
24057 ]
24058 },
24059 "vkGetPhysicalDeviceMultisamplePropertiesEXT": {
24060 "(VK_EXT_sample_locations)": [
24061 {
24062 "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter",
24063 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
24064 },
24065 {
24066 "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter",
24067 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
24068 },
24069 {
24070 "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-pMultisampleProperties-parameter",
24071 "text": " <code>pMultisampleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMultisamplePropertiesEXT</code> structure"
24072 }
24073 ]
24074 },
24075 "VkMultisamplePropertiesEXT": {
24076 "(VK_EXT_sample_locations)": [
24077 {
24078 "vuid": "VUID-VkMultisamplePropertiesEXT-sType-sType",
24079 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT</code>"
24080 },
24081 {
24082 "vuid": "VUID-VkMultisamplePropertiesEXT-pNext-pNext",
24083 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24084 }
24085 ]
24086 },
24087 "vkGetPhysicalDeviceFormatProperties": {
24088 "core": [
24089 {
24090 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter",
24091 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
24092 },
24093 {
24094 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-format-parameter",
24095 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
24096 },
24097 {
24098 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-pFormatProperties-parameter",
24099 "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFormatProperties</code> structure"
24100 }
24101 ]
24102 },
24103 "vkGetPhysicalDeviceFormatProperties2": {
24104 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
24105 {
24106 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter",
24107 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
24108 },
24109 {
24110 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-format-parameter",
24111 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
24112 },
24113 {
24114 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-pFormatProperties-parameter",
24115 "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFormatProperties2</code> structure"
24116 }
24117 ]
24118 },
24119 "VkFormatProperties2": {
24120 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
24121 {
24122 "vuid": "VUID-VkFormatProperties2-sType-sType",
24123 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2</code>"
24124 },
24125 {
24126 "vuid": "VUID-VkFormatProperties2-pNext-pNext",
24127 "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>"
24128 }
24129 ]
24130 },
24131 "VkDrmFormatModifierPropertiesListEXT": {
24132 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
24133 {
24134 "vuid": "VUID-VkDrmFormatModifierPropertiesListEXT-sType-sType",
24135 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT</code>"
24136 }
24137 ]
24138 },
24139 "vkGetPhysicalDeviceImageFormatProperties": {
24140 "(VK_EXT_image_drm_format_modifier)": [
24141 {
24142 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-02248",
24143 "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)."
24144 }
24145 ],
24146 "core": [
24147 {
24148 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter",
24149 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
24150 },
24151 {
24152 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter",
24153 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
24154 },
24155 {
24156 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-type-parameter",
24157 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
24158 },
24159 {
24160 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter",
24161 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
24162 },
24163 {
24164 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter",
24165 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
24166 },
24167 {
24168 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask",
24169 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
24170 },
24171 {
24172 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter",
24173 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
24174 },
24175 {
24176 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-pImageFormatProperties-parameter",
24177 "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageFormatProperties</code> structure"
24178 }
24179 ]
24180 },
24181 "vkGetPhysicalDeviceExternalImageFormatPropertiesNV": {
24182 "(VK_NV_external_memory_capabilities)": [
24183 {
24184 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-physicalDevice-parameter",
24185 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
24186 },
24187 {
24188 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-format-parameter",
24189 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
24190 },
24191 {
24192 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-type-parameter",
24193 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
24194 },
24195 {
24196 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-tiling-parameter",
24197 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
24198 },
24199 {
24200 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-parameter",
24201 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
24202 },
24203 {
24204 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-requiredbitmask",
24205 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
24206 },
24207 {
24208 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-flags-parameter",
24209 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
24210 },
24211 {
24212 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-parameter",
24213 "text": " <code>externalHandleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
24214 },
24215 {
24216 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-pExternalImageFormatProperties-parameter",
24217 "text": " <code>pExternalImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalImageFormatPropertiesNV</code> structure"
24218 }
24219 ]
24220 },
24221 "vkGetPhysicalDeviceImageFormatProperties2": {
24222 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
24223 {
24224 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-01868",
24225 "text": " If the <code>pNext</code> chain of <code>pImageFormatProperties</code> contains an instance of <a href=\"#VkAndroidHardwareBufferUsageANDROID\">VkAndroidHardwareBufferUsageANDROID</a>, the <code>pNext</code> chain of <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> with <code>handleType</code> set to <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>."
24226 }
24227 ],
24228 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
24229 {
24230 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter",
24231 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
24232 },
24233 {
24234 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatInfo-parameter",
24235 "text": " <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceImageFormatInfo2</code> structure"
24236 },
24237 {
24238 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatProperties-parameter",
24239 "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageFormatProperties2</code> structure"
24240 }
24241 ]
24242 },
24243 "VkPhysicalDeviceImageFormatInfo2": {
24244 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
24245 {
24246 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02249",
24247 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> if and only if the <code>pNext</code> chain contains <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>."
24248 },
24249 {
24250 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02313",
24251 "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a> with non-zero <code>viewFormatCount</code>."
24252 }
24253 ],
24254 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
24255 {
24256 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType",
24257 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2</code>"
24258 },
24259 {
24260 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext",
24261 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a>, <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a>, <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>, or <a href=\"#VkPhysicalDeviceImageViewImageFormatInfoEXT\">VkPhysicalDeviceImageViewImageFormatInfoEXT</a>"
24262 },
24263 {
24264 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-unique",
24265 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
24266 },
24267 {
24268 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter",
24269 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
24270 },
24271 {
24272 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-type-parameter",
24273 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
24274 },
24275 {
24276 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-parameter",
24277 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
24278 },
24279 {
24280 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-parameter",
24281 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
24282 },
24283 {
24284 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-requiredbitmask",
24285 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
24286 },
24287 {
24288 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-flags-parameter",
24289 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
24290 }
24291 ]
24292 },
24293 "VkImageFormatProperties2": {
24294 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
24295 {
24296 "vuid": "VUID-VkImageFormatProperties2-sType-sType",
24297 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2</code>"
24298 },
24299 {
24300 "vuid": "VUID-VkImageFormatProperties2-pNext-pNext",
24301 "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>"
24302 },
24303 {
24304 "vuid": "VUID-VkImageFormatProperties2-sType-unique",
24305 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
24306 }
24307 ]
24308 },
24309 "VkTextureLODGatherFormatPropertiesAMD": {
24310 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_AMD_texture_gather_bias_lod)": [
24311 {
24312 "vuid": "VUID-VkTextureLODGatherFormatPropertiesAMD-sType-sType",
24313 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD</code>"
24314 }
24315 ]
24316 },
24317 "VkPhysicalDeviceExternalImageFormatInfo": {
24318 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
24319 {
24320 "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-sType-sType",
24321 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO</code>"
24322 },
24323 {
24324 "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-handleType-parameter",
24325 "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"
24326 }
24327 ]
24328 },
24329 "VkExternalImageFormatProperties": {
24330 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
24331 {
24332 "vuid": "VUID-VkExternalImageFormatProperties-sType-sType",
24333 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES</code>"
24334 }
24335 ]
24336 },
24337 "VkPhysicalDeviceImageDrmFormatModifierInfoEXT": {
24338 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
24339 {
24340 "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314",
24341 "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."
24342 },
24343 {
24344 "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315",
24345 "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>."
24346 },
24347 {
24348 "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02316",
24349 "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>."
24350 },
24351 {
24352 "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sType-sType",
24353 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT</code>"
24354 },
24355 {
24356 "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-parameter",
24357 "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
24358 }
24359 ]
24360 },
24361 "VkSamplerYcbcrConversionImageFormatProperties": {
24362 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
24363 {
24364 "vuid": "VUID-VkSamplerYcbcrConversionImageFormatProperties-sType-sType",
24365 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES</code>"
24366 }
24367 ]
24368 },
24369 "VkAndroidHardwareBufferUsageANDROID": {
24370 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
24371 {
24372 "vuid": "VUID-VkAndroidHardwareBufferUsageANDROID-sType-sType",
24373 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID</code>"
24374 }
24375 ]
24376 },
24377 "VkPhysicalDeviceImageViewImageFormatInfoEXT": {
24378 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [
24379 {
24380 "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-sType-sType",
24381 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT</code>"
24382 },
24383 {
24384 "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-imageViewType-parameter",
24385 "text": " <code>imageViewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value"
24386 }
24387 ]
24388 },
24389 "VkFilterCubicImageViewImageFormatPropertiesEXT": {
24390 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [
24391 {
24392 "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-sType-sType",
24393 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT</code>"
24394 },
24395 {
24396 "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-pNext-02627",
24397 "text": " If the <code>pNext</code> chain of the <a href=\"#VkImageFormatProperties2\">VkImageFormatProperties2</a> structure contains an instance of <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>, the <code>pNext</code> chain of the <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> structure <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkPhysicalDeviceImageViewImageFormatInfoEXT\">VkPhysicalDeviceImageViewImageFormatInfoEXT</a> with an <code>imageViewType</code> that is compatible with <code>imageType</code>."
24398 }
24399 ]
24400 },
24401 "vkGetPhysicalDeviceExternalBufferProperties": {
24402 "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
24403 {
24404 "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter",
24405 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
24406 },
24407 {
24408 "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferInfo-parameter",
24409 "text": " <code>pExternalBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceExternalBufferInfo</code> structure"
24410 },
24411 {
24412 "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferProperties-parameter",
24413 "text": " <code>pExternalBufferProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalBufferProperties</code> structure"
24414 }
24415 ]
24416 },
24417 "VkPhysicalDeviceExternalBufferInfo": {
24418 "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
24419 {
24420 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-sType-sType",
24421 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO</code>"
24422 },
24423 {
24424 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-pNext-pNext",
24425 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24426 },
24427 {
24428 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter",
24429 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values"
24430 },
24431 {
24432 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-parameter",
24433 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values"
24434 },
24435 {
24436 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-requiredbitmask",
24437 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
24438 },
24439 {
24440 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter",
24441 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
24442 }
24443 ]
24444 },
24445 "VkExternalBufferProperties": {
24446 "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
24447 {
24448 "vuid": "VUID-VkExternalBufferProperties-sType-sType",
24449 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES</code>"
24450 },
24451 {
24452 "vuid": "VUID-VkExternalBufferProperties-pNext-pNext",
24453 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24454 }
24455 ]
24456 },
24457 "vkGetPhysicalDeviceExternalSemaphoreProperties": {
24458 "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
24459 {
24460 "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter",
24461 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
24462 },
24463 {
24464 "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreInfo-parameter",
24465 "text": " <code>pExternalSemaphoreInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceExternalSemaphoreInfo</code> structure"
24466 },
24467 {
24468 "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreProperties-parameter",
24469 "text": " <code>pExternalSemaphoreProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalSemaphoreProperties</code> structure"
24470 }
24471 ]
24472 },
24473 "VkPhysicalDeviceExternalSemaphoreInfo": {
24474 "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
24475 {
24476 "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-sType",
24477 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO</code>"
24478 },
24479 {
24480 "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-pNext-pNext",
24481 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24482 },
24483 {
24484 "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter",
24485 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
24486 }
24487 ]
24488 },
24489 "VkExternalSemaphoreProperties": {
24490 "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
24491 {
24492 "vuid": "VUID-VkExternalSemaphoreProperties-sType-sType",
24493 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES</code>"
24494 },
24495 {
24496 "vuid": "VUID-VkExternalSemaphoreProperties-pNext-pNext",
24497 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24498 }
24499 ]
24500 },
24501 "vkGetPhysicalDeviceExternalFenceProperties": {
24502 "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
24503 {
24504 "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter",
24505 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
24506 },
24507 {
24508 "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceInfo-parameter",
24509 "text": " <code>pExternalFenceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceExternalFenceInfo</code> structure"
24510 },
24511 {
24512 "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceProperties-parameter",
24513 "text": " <code>pExternalFenceProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalFenceProperties</code> structure"
24514 }
24515 ]
24516 },
24517 "VkPhysicalDeviceExternalFenceInfo": {
24518 "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
24519 {
24520 "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-sType-sType",
24521 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO</code>"
24522 },
24523 {
24524 "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-pNext-pNext",
24525 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24526 },
24527 {
24528 "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter",
24529 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
24530 }
24531 ]
24532 },
24533 "VkExternalFenceProperties": {
24534 "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
24535 {
24536 "vuid": "VUID-VkExternalFenceProperties-sType-sType",
24537 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES</code>"
24538 },
24539 {
24540 "vuid": "VUID-VkExternalFenceProperties-pNext-pNext",
24541 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24542 }
24543 ]
24544 },
24545 "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT": {
24546 "(VK_EXT_calibrated_timestamps)": [
24547 {
24548 "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-physicalDevice-parameter",
24549 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
24550 },
24551 {
24552 "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomainCount-parameter",
24553 "text": " <code>pTimeDomainCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
24554 },
24555 {
24556 "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomains-parameter",
24557 "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"
24558 }
24559 ]
24560 },
24561 "vkSetDebugUtilsObjectNameEXT": {
24562 "(VK_EXT_debug_utils)": [
24563 {
24564 "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02587",
24565 "text": " <code>pNameInfo</code>-&gt;<code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
24566 },
24567 {
24568 "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02588",
24569 "text": " <code>pNameInfo</code>-&gt;<code>objectHandle</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
24570 },
24571 {
24572 "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-device-parameter",
24573 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
24574 },
24575 {
24576 "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-parameter",
24577 "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsObjectNameInfoEXT</code> structure"
24578 }
24579 ]
24580 },
24581 "VkDebugUtilsObjectNameInfoEXT": {
24582 "(VK_EXT_debug_utils)": [
24583 {
24584 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589",
24585 "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>"
24586 },
24587 {
24588 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02590",
24589 "text": " If <code>objectType</code> is not <code>VK_OBJECT_TYPE_UNKNOWN</code>, <code>objectHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> or a valid Vulkan handle of the type associated with <code>objectType</code> as defined in the <a href=\"#debugging-object-types\">VkObjectType and Vulkan Handle Relationship</a> table"
24590 },
24591 {
24592 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType",
24593 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT</code>"
24594 },
24595 {
24596 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pNext-pNext",
24597 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24598 },
24599 {
24600 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter",
24601 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
24602 },
24603 {
24604 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pObjectName-parameter",
24605 "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"
24606 }
24607 ]
24608 },
24609 "vkSetDebugUtilsObjectTagEXT": {
24610 "(VK_EXT_debug_utils)": [
24611 {
24612 "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-device-parameter",
24613 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
24614 },
24615 {
24616 "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-pTagInfo-parameter",
24617 "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsObjectTagInfoEXT</code> structure"
24618 }
24619 ]
24620 },
24621 "VkDebugUtilsObjectTagInfoEXT": {
24622 "(VK_EXT_debug_utils)": [
24623 {
24624 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-01908",
24625 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
24626 },
24627 {
24628 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910",
24629 "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be a valid Vulkan handle of the type associated with <code>objectType</code> as defined in the <a href=\"#debugging-object-types\">VkObjectType and Vulkan Handle Relationship</a> table"
24630 },
24631 {
24632 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-sType-sType",
24633 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT</code>"
24634 },
24635 {
24636 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pNext-pNext",
24637 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24638 },
24639 {
24640 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter",
24641 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
24642 },
24643 {
24644 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter",
24645 "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes"
24646 },
24647 {
24648 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength",
24649 "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
24650 }
24651 ]
24652 },
24653 "vkQueueBeginDebugUtilsLabelEXT": {
24654 "(VK_EXT_debug_utils)": [
24655 {
24656 "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter",
24657 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
24658 },
24659 {
24660 "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
24661 "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
24662 }
24663 ]
24664 },
24665 "VkDebugUtilsLabelEXT": {
24666 "(VK_EXT_debug_utils)": [
24667 {
24668 "vuid": "VUID-VkDebugUtilsLabelEXT-sType-sType",
24669 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT</code>"
24670 },
24671 {
24672 "vuid": "VUID-VkDebugUtilsLabelEXT-pNext-pNext",
24673 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24674 },
24675 {
24676 "vuid": "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter",
24677 "text": " <code>pLabelName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
24678 }
24679 ]
24680 },
24681 "vkQueueEndDebugUtilsLabelEXT": {
24682 "(VK_EXT_debug_utils)": [
24683 {
24684 "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-None-01911",
24685 "text": " There <strong class=\"purple\">must</strong> be an outstanding <code>vkQueueBeginDebugUtilsLabelEXT</code> command prior to the <code>vkQueueEndDebugUtilsLabelEXT</code> on the queue"
24686 },
24687 {
24688 "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter",
24689 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
24690 }
24691 ]
24692 },
24693 "vkQueueInsertDebugUtilsLabelEXT": {
24694 "(VK_EXT_debug_utils)": [
24695 {
24696 "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter",
24697 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
24698 },
24699 {
24700 "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
24701 "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
24702 }
24703 ]
24704 },
24705 "vkCmdBeginDebugUtilsLabelEXT": {
24706 "(VK_EXT_debug_utils)": [
24707 {
24708 "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter",
24709 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
24710 },
24711 {
24712 "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
24713 "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
24714 },
24715 {
24716 "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-recording",
24717 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
24718 },
24719 {
24720 "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-cmdpool",
24721 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
24722 }
24723 ]
24724 },
24725 "vkCmdEndDebugUtilsLabelEXT": {
24726 "(VK_EXT_debug_utils)": [
24727 {
24728 "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912",
24729 "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"
24730 },
24731 {
24732 "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01913",
24733 "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>."
24734 },
24735 {
24736 "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter",
24737 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
24738 },
24739 {
24740 "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-recording",
24741 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
24742 },
24743 {
24744 "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-cmdpool",
24745 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
24746 }
24747 ]
24748 },
24749 "vkCmdInsertDebugUtilsLabelEXT": {
24750 "(VK_EXT_debug_utils)": [
24751 {
24752 "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter",
24753 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
24754 },
24755 {
24756 "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
24757 "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
24758 },
24759 {
24760 "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-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-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-cmdpool",
24765 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
24766 }
24767 ]
24768 },
24769 "vkCreateDebugUtilsMessengerEXT": {
24770 "(VK_EXT_debug_utils)": [
24771 {
24772 "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-instance-parameter",
24773 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
24774 },
24775 {
24776 "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pCreateInfo-parameter",
24777 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsMessengerCreateInfoEXT</code> structure"
24778 },
24779 {
24780 "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pAllocator-parameter",
24781 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
24782 },
24783 {
24784 "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pMessenger-parameter",
24785 "text": " <code>pMessenger</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDebugUtilsMessengerEXT</code> handle"
24786 }
24787 ]
24788 },
24789 "VkDebugUtilsMessengerCreateInfoEXT": {
24790 "(VK_EXT_debug_utils)": [
24791 {
24792 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-01914",
24793 "text": " <code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugUtilsMessengerCallbackEXT\">PFN_vkDebugUtilsMessengerCallbackEXT</a>"
24794 },
24795 {
24796 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-sType-sType",
24797 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT</code>"
24798 },
24799 {
24800 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-flags-zerobitmask",
24801 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24802 },
24803 {
24804 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-parameter",
24805 "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> values"
24806 },
24807 {
24808 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-requiredbitmask",
24809 "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
24810 },
24811 {
24812 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter",
24813 "text": " <code>messageType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values"
24814 },
24815 {
24816 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-requiredbitmask",
24817 "text": " <code>messageType</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
24818 },
24819 {
24820 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-parameter",
24821 "text": " <code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugUtilsMessengerCallbackEXT\">PFN_vkDebugUtilsMessengerCallbackEXT</a> value"
24822 }
24823 ]
24824 },
24825 "VkDebugUtilsMessengerCallbackDataEXT": {
24826 "(VK_EXT_debug_utils)": [
24827 {
24828 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-sType",
24829 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT</code>"
24830 },
24831 {
24832 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pNext-pNext",
24833 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24834 },
24835 {
24836 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-flags-zerobitmask",
24837 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
24838 },
24839 {
24840 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessageIdName-parameter",
24841 "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"
24842 },
24843 {
24844 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessage-parameter",
24845 "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
24846 },
24847 {
24848 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pQueueLabels-parameter",
24849 "text": " If <code>queueLabelCount</code> is not <code>0</code>, <code>pQueueLabels</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueLabelCount</code> valid <code>VkDebugUtilsLabelEXT</code> structures"
24850 },
24851 {
24852 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pCmdBufLabels-parameter",
24853 "text": " If <code>cmdBufLabelCount</code> is not <code>0</code>, <code>pCmdBufLabels</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>cmdBufLabelCount</code> valid <code>VkDebugUtilsLabelEXT</code> structures"
24854 },
24855 {
24856 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pObjects-parameter",
24857 "text": " If <code>objectCount</code> is not <code>0</code>, <code>pObjects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <code>VkDebugUtilsObjectNameInfoEXT</code> structures"
24858 }
24859 ]
24860 },
24861 "vkSubmitDebugUtilsMessageEXT": {
24862 "(VK_EXT_debug_utils)": [
24863 {
24864 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-objectType-02591",
24865 "text": " <code>objectType</code> member of each element of <code>pCallbackData</code>-&gt;<code>pObjects</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
24866 },
24867 {
24868 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-instance-parameter",
24869 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
24870 },
24871 {
24872 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageSeverity-parameter",
24873 "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> value"
24874 },
24875 {
24876 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-parameter",
24877 "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values"
24878 },
24879 {
24880 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-requiredbitmask",
24881 "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
24882 },
24883 {
24884 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-pCallbackData-parameter",
24885 "text": " <code>pCallbackData</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsMessengerCallbackDataEXT</code> structure"
24886 }
24887 ]
24888 },
24889 "vkDestroyDebugUtilsMessengerEXT": {
24890 "(VK_EXT_debug_utils)": [
24891 {
24892 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01915",
24893 "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"
24894 },
24895 {
24896 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01916",
24897 "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>"
24898 },
24899 {
24900 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-instance-parameter",
24901 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
24902 },
24903 {
24904 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parameter",
24905 "text": " <code>messenger</code> <strong class=\"purple\">must</strong> be a valid <code>VkDebugUtilsMessengerEXT</code> handle"
24906 },
24907 {
24908 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-pAllocator-parameter",
24909 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
24910 },
24911 {
24912 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parent",
24913 "text": " <code>messenger</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>"
24914 }
24915 ]
24916 },
24917 "vkDebugMarkerSetObjectNameEXT": {
24918 "(VK_EXT_debug_marker)": [
24919 {
24920 "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-device-parameter",
24921 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
24922 },
24923 {
24924 "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter",
24925 "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerObjectNameInfoEXT</code> structure"
24926 }
24927 ]
24928 },
24929 "VkDebugMarkerObjectNameInfoEXT": {
24930 "(VK_EXT_debug_marker)": [
24931 {
24932 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-01490",
24933 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>"
24934 },
24935 {
24936 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01491",
24937 "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
24938 },
24939 {
24940 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01492",
24941 "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\">VkDebugReportObjectTypeEXT and Vulkan Handle Relationship</a>."
24942 },
24943 {
24944 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-sType-sType",
24945 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT</code>"
24946 },
24947 {
24948 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pNext-pNext",
24949 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24950 },
24951 {
24952 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter",
24953 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
24954 },
24955 {
24956 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter",
24957 "text": " <code>pObjectName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
24958 }
24959 ]
24960 },
24961 "vkDebugMarkerSetObjectTagEXT": {
24962 "(VK_EXT_debug_marker)": [
24963 {
24964 "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-device-parameter",
24965 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
24966 },
24967 {
24968 "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter",
24969 "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerObjectTagInfoEXT</code> structure"
24970 }
24971 ]
24972 },
24973 "VkDebugMarkerObjectTagInfoEXT": {
24974 "(VK_EXT_debug_marker)": [
24975 {
24976 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-01493",
24977 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>"
24978 },
24979 {
24980 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01494",
24981 "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
24982 },
24983 {
24984 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01495",
24985 "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\">VkDebugReportObjectTypeEXT and Vulkan Handle Relationship</a>."
24986 },
24987 {
24988 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-sType-sType",
24989 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT</code>"
24990 },
24991 {
24992 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pNext-pNext",
24993 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
24994 },
24995 {
24996 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter",
24997 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
24998 },
24999 {
25000 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter",
25001 "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes"
25002 },
25003 {
25004 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength",
25005 "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
25006 }
25007 ]
25008 },
25009 "vkCmdDebugMarkerBeginEXT": {
25010 "(VK_EXT_debug_marker)": [
25011 {
25012 "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter",
25013 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
25014 },
25015 {
25016 "vuid": "VUID-vkCmdDebugMarkerBeginEXT-pMarkerInfo-parameter",
25017 "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerMarkerInfoEXT</code> structure"
25018 },
25019 {
25020 "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-recording",
25021 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25022 },
25023 {
25024 "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-cmdpool",
25025 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
25026 }
25027 ]
25028 },
25029 "VkDebugMarkerMarkerInfoEXT": {
25030 "(VK_EXT_debug_marker)": [
25031 {
25032 "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-sType-sType",
25033 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT</code>"
25034 },
25035 {
25036 "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pNext-pNext",
25037 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
25038 },
25039 {
25040 "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pMarkerName-parameter",
25041 "text": " <code>pMarkerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
25042 }
25043 ]
25044 },
25045 "vkCmdDebugMarkerEndEXT": {
25046 "(VK_EXT_debug_marker)": [
25047 {
25048 "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01239",
25049 "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"
25050 },
25051 {
25052 "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01240",
25053 "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>."
25054 },
25055 {
25056 "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter",
25057 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
25058 },
25059 {
25060 "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-recording",
25061 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25062 },
25063 {
25064 "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-cmdpool",
25065 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
25066 }
25067 ]
25068 },
25069 "vkCmdDebugMarkerInsertEXT": {
25070 "(VK_EXT_debug_marker)": [
25071 {
25072 "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter",
25073 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
25074 },
25075 {
25076 "vuid": "VUID-vkCmdDebugMarkerInsertEXT-pMarkerInfo-parameter",
25077 "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerMarkerInfoEXT</code> structure"
25078 },
25079 {
25080 "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-recording",
25081 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25082 },
25083 {
25084 "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-cmdpool",
25085 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
25086 }
25087 ]
25088 },
25089 "vkCreateDebugReportCallbackEXT": {
25090 "(VK_EXT_debug_report)": [
25091 {
25092 "vuid": "VUID-vkCreateDebugReportCallbackEXT-instance-parameter",
25093 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
25094 },
25095 {
25096 "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCreateInfo-parameter",
25097 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugReportCallbackCreateInfoEXT</code> structure"
25098 },
25099 {
25100 "vuid": "VUID-vkCreateDebugReportCallbackEXT-pAllocator-parameter",
25101 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
25102 },
25103 {
25104 "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCallback-parameter",
25105 "text": " <code>pCallback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDebugReportCallbackEXT</code> handle"
25106 }
25107 ]
25108 },
25109 "VkDebugReportCallbackCreateInfoEXT": {
25110 "(VK_EXT_debug_report)": [
25111 {
25112 "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-sType-sType",
25113 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT</code>"
25114 },
25115 {
25116 "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-flags-parameter",
25117 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values"
25118 },
25119 {
25120 "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-parameter",
25121 "text": " <code>pfnCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugReportCallbackEXT\">PFN_vkDebugReportCallbackEXT</a> value"
25122 }
25123 ]
25124 },
25125 "vkDebugReportMessageEXT": {
25126 "(VK_EXT_debug_report)": [
25127 {
25128 "vuid": "VUID-vkDebugReportMessageEXT-object-01241",
25129 "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
25130 },
25131 {
25132 "vuid": "VUID-vkDebugReportMessageEXT-objectType-01498",
25133 "text": " If <code>objectType</code> is not <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code> and <code>object</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the corresponding type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\">VkDebugReportObjectTypeEXT and Vulkan Handle Relationship</a>."
25134 },
25135 {
25136 "vuid": "VUID-vkDebugReportMessageEXT-instance-parameter",
25137 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
25138 },
25139 {
25140 "vuid": "VUID-vkDebugReportMessageEXT-flags-parameter",
25141 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values"
25142 },
25143 {
25144 "vuid": "VUID-vkDebugReportMessageEXT-flags-requiredbitmask",
25145 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
25146 },
25147 {
25148 "vuid": "VUID-vkDebugReportMessageEXT-objectType-parameter",
25149 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
25150 },
25151 {
25152 "vuid": "VUID-vkDebugReportMessageEXT-pLayerPrefix-parameter",
25153 "text": " <code>pLayerPrefix</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
25154 },
25155 {
25156 "vuid": "VUID-vkDebugReportMessageEXT-pMessage-parameter",
25157 "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
25158 }
25159 ]
25160 },
25161 "vkDestroyDebugReportCallbackEXT": {
25162 "(VK_EXT_debug_report)": [
25163 {
25164 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01242",
25165 "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"
25166 },
25167 {
25168 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01243",
25169 "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>"
25170 },
25171 {
25172 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-parameter",
25173 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
25174 },
25175 {
25176 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parameter",
25177 "text": " <code>callback</code> <strong class=\"purple\">must</strong> be a valid <code>VkDebugReportCallbackEXT</code> handle"
25178 },
25179 {
25180 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-pAllocator-parameter",
25181 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
25182 },
25183 {
25184 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parent",
25185 "text": " <code>callback</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>"
25186 }
25187 ]
25188 },
25189 "vkCmdSetCheckpointNV": {
25190 "(VK_NV_device_diagnostic_checkpoints)": [
25191 {
25192 "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-parameter",
25193 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
25194 },
25195 {
25196 "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-recording",
25197 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
25198 },
25199 {
25200 "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-cmdpool",
25201 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
25202 }
25203 ]
25204 },
25205 "vkGetQueueCheckpointDataNV": {
25206 "(VK_NV_device_diagnostic_checkpoints)": [
25207 {
25208 "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-02025",
25209 "text": " The device that <code>queue</code> belongs to <strong class=\"purple\">must</strong> be in the lost state"
25210 },
25211 {
25212 "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-parameter",
25213 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
25214 },
25215 {
25216 "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointDataCount-parameter",
25217 "text": " <code>pCheckpointDataCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
25218 },
25219 {
25220 "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointData-parameter",
25221 "text": " If the value referenced by <code>pCheckpointDataCount</code> is not <code>0</code>, and <code>pCheckpointData</code> is not <code>NULL</code>, <code>pCheckpointData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCheckpointDataCount</code> <code>VkCheckpointDataNV</code> structures"
25222 }
25223 ]
25224 },
25225 "VkCheckpointDataNV": {
25226 "(VK_NV_device_diagnostic_checkpoints)": [
25227 {
25228 "vuid": "VUID-VkCheckpointDataNV-sType-sType",
25229 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV</code>"
25230 },
25231 {
25232 "vuid": "VUID-VkCheckpointDataNV-pNext-pNext",
25233 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
25234 }
25235 ]
25236 }
25237 }
25238}