1{ 2 "version info": { 3 "schema version": 2, 4 "api version": "1.1.102", 5 "comment": "from git branch: github-master commit: 35e7bee5f0f50b7c1634cd205ded035acea43ad9", 6 "date": "2019-03-04 05:06:36Z" 7 }, 8 "validation": { 9 "vkGetInstanceProcAddr": { 10 "core": [ 11 { 12 "vuid": "VUID-vkGetInstanceProcAddr-instance-parameter", 13 "text": " If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 14 }, 15 { 16 "vuid": "VUID-vkGetInstanceProcAddr-pName-parameter", 17 "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 18 } 19 ] 20 }, 21 "vkGetDeviceProcAddr": { 22 "core": [ 23 { 24 "vuid": "VUID-vkGetDeviceProcAddr-device-parameter", 25 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 26 }, 27 { 28 "vuid": "VUID-vkGetDeviceProcAddr-pName-parameter", 29 "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 30 } 31 ] 32 }, 33 "vkEnumerateInstanceVersion": { 34 "(VK_VERSION_1_1)": [ 35 { 36 "vuid": "VUID-vkEnumerateInstanceVersion-pApiVersion-parameter", 37 "text": " <code>pApiVersion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 38 } 39 ] 40 }, 41 "vkCreateInstance": { 42 "core": [ 43 { 44 "vuid": "VUID-vkCreateInstance-ppEnabledExtensionNames-01388", 45 "text": " All <a href=\"#extendingvulkan-extensions-extensiondependencies\">required extensions</a> for each extension in the <a href=\"#VkInstanceCreateInfo\">VkInstanceCreateInfo</a>::<code>ppEnabledExtensionNames</code> list <strong class=\"purple\">must</strong> also be present in that list." 46 }, 47 { 48 "vuid": "VUID-vkCreateInstance-pCreateInfo-parameter", 49 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkInstanceCreateInfo</code> structure" 50 }, 51 { 52 "vuid": "VUID-vkCreateInstance-pAllocator-parameter", 53 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 54 }, 55 { 56 "vuid": "VUID-vkCreateInstance-pInstance-parameter", 57 "text": " <code>pInstance</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkInstance</code> handle" 58 } 59 ] 60 }, 61 "VkInstanceCreateInfo": { 62 "core": [ 63 { 64 "vuid": "VUID-VkInstanceCreateInfo-sType-sType", 65 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO</code>" 66 }, 67 { 68 "vuid": "VUID-VkInstanceCreateInfo-pNext-pNext", 69 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDebugReportCallbackCreateInfoEXT\">VkDebugReportCallbackCreateInfoEXT</a>, <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a>, <a href=\"#VkValidationFeaturesEXT\">VkValidationFeaturesEXT</a>, or <a href=\"#VkValidationFlagsEXT\">VkValidationFlagsEXT</a>" 70 }, 71 { 72 "vuid": "VUID-VkInstanceCreateInfo-sType-unique", 73 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 74 }, 75 { 76 "vuid": "VUID-VkInstanceCreateInfo-flags-zerobitmask", 77 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 78 }, 79 { 80 "vuid": "VUID-VkInstanceCreateInfo-pApplicationInfo-parameter", 81 "text": " If <code>pApplicationInfo</code> is not <code>NULL</code>, <code>pApplicationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkApplicationInfo</code> structure" 82 }, 83 { 84 "vuid": "VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter", 85 "text": " If <code>enabledLayerCount</code> is not <code>0</code>, <code>ppEnabledLayerNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledLayerCount</code> null-terminated UTF-8 strings" 86 }, 87 { 88 "vuid": "VUID-VkInstanceCreateInfo-ppEnabledExtensionNames-parameter", 89 "text": " If <code>enabledExtensionCount</code> is not <code>0</code>, <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledExtensionCount</code> null-terminated UTF-8 strings" 90 } 91 ] 92 }, 93 "VkValidationFlagsEXT": { 94 "(VK_EXT_validation_flags)": [ 95 { 96 "vuid": "VUID-VkValidationFlagsEXT-sType-sType", 97 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT</code>" 98 }, 99 { 100 "vuid": "VUID-VkValidationFlagsEXT-pDisabledValidationChecks-parameter", 101 "text": " <code>pDisabledValidationChecks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>disabledValidationCheckCount</code> valid <a href=\"#VkValidationCheckEXT\">VkValidationCheckEXT</a> values" 102 }, 103 { 104 "vuid": "VUID-VkValidationFlagsEXT-disabledValidationCheckCount-arraylength", 105 "text": " <code>disabledValidationCheckCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 106 } 107 ] 108 }, 109 "VkValidationFeaturesEXT": { 110 "(VK_EXT_validation_features)": [ 111 { 112 "vuid": "VUID-VkValidationFeaturesEXT-sType-sType", 113 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT</code>" 114 }, 115 { 116 "vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-parameter", 117 "text": " If <code>enabledValidationFeatureCount</code> is not <code>0</code>, <code>pEnabledValidationFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledValidationFeatureCount</code> valid <a href=\"#VkValidationFeatureEnableEXT\">VkValidationFeatureEnableEXT</a> values" 118 }, 119 { 120 "vuid": "VUID-VkValidationFeaturesEXT-pDisabledValidationFeatures-parameter", 121 "text": " If <code>disabledValidationFeatureCount</code> is not <code>0</code>, <code>pDisabledValidationFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>disabledValidationFeatureCount</code> valid <a href=\"#VkValidationFeatureDisableEXT\">VkValidationFeatureDisableEXT</a> values" 122 } 123 ] 124 }, 125 "VkApplicationInfo": { 126 "core": [ 127 { 128 "vuid": "VUID-VkApplicationInfo-sType-sType", 129 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_APPLICATION_INFO</code>" 130 }, 131 { 132 "vuid": "VUID-VkApplicationInfo-pNext-pNext", 133 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 134 }, 135 { 136 "vuid": "VUID-VkApplicationInfo-pApplicationName-parameter", 137 "text": " If <code>pApplicationName</code> is not <code>NULL</code>, <code>pApplicationName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 138 }, 139 { 140 "vuid": "VUID-VkApplicationInfo-pEngineName-parameter", 141 "text": " If <code>pEngineName</code> is not <code>NULL</code>, <code>pEngineName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 142 } 143 ] 144 }, 145 "vkDestroyInstance": { 146 "core": [ 147 { 148 "vuid": "VUID-vkDestroyInstance-instance-00629", 149 "text": " All child objects created using <code>instance</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>instance</code>" 150 }, 151 { 152 "vuid": "VUID-vkDestroyInstance-instance-00630", 153 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 154 }, 155 { 156 "vuid": "VUID-vkDestroyInstance-instance-00631", 157 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 158 }, 159 { 160 "vuid": "VUID-vkDestroyInstance-instance-parameter", 161 "text": " If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 162 }, 163 { 164 "vuid": "VUID-vkDestroyInstance-pAllocator-parameter", 165 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 166 } 167 ] 168 }, 169 "vkEnumeratePhysicalDevices": { 170 "core": [ 171 { 172 "vuid": "VUID-vkEnumeratePhysicalDevices-instance-parameter", 173 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 174 }, 175 { 176 "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDeviceCount-parameter", 177 "text": " <code>pPhysicalDeviceCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 178 }, 179 { 180 "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDevices-parameter", 181 "text": " If the value referenced by <code>pPhysicalDeviceCount</code> is not <code>0</code>, and <code>pPhysicalDevices</code> is not <code>NULL</code>, <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPhysicalDeviceCount</code> <code>VkPhysicalDevice</code> handles" 182 } 183 ] 184 }, 185 "vkGetPhysicalDeviceProperties": { 186 "core": [ 187 { 188 "vuid": "VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter", 189 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 190 }, 191 { 192 "vuid": "VUID-vkGetPhysicalDeviceProperties-pProperties-parameter", 193 "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceProperties</code> structure" 194 } 195 ] 196 }, 197 "vkGetPhysicalDeviceProperties2": { 198 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 199 { 200 "vuid": "VUID-vkGetPhysicalDeviceProperties2-physicalDevice-parameter", 201 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 202 }, 203 { 204 "vuid": "VUID-vkGetPhysicalDeviceProperties2-pProperties-parameter", 205 "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceProperties2</code> structure" 206 } 207 ] 208 }, 209 "VkPhysicalDeviceProperties2": { 210 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 211 { 212 "vuid": "VUID-VkPhysicalDeviceProperties2-sType-sType", 213 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2</code>" 214 }, 215 { 216 "vuid": "VUID-VkPhysicalDeviceProperties2-pNext-pNext", 217 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceConservativeRasterizationPropertiesEXT\">VkPhysicalDeviceConservativeRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesNV\">VkPhysicalDeviceCooperativeMatrixPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingPropertiesEXT\">VkPhysicalDeviceDescriptorIndexingPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDriverPropertiesKHR\">VkPhysicalDeviceDriverPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFloatControlsPropertiesKHR\">VkPhysicalDeviceFloatControlsPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapPropertiesEXT\">VkPhysicalDeviceFragmentDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockPropertiesEXT\">VkPhysicalDeviceInlineUniformBlockPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMaintenance3Properties\">VkPhysicalDeviceMaintenance3Properties</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesNV\">VkPhysicalDeviceMeshShaderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX\">VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX</a>, <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>, <a href=\"#VkPhysicalDevicePCIBusInfoPropertiesEXT\">VkPhysicalDevicePCIBusInfoPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT\">VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesAMD\">VkPhysicalDeviceShaderCorePropertiesAMD</a>, <a href=\"#VkPhysicalDeviceShadingRateImagePropertiesNV\">VkPhysicalDeviceShadingRateImagePropertiesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupProperties\">VkPhysicalDeviceSubgroupProperties</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>, or <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>" 218 }, 219 { 220 "vuid": "VUID-VkPhysicalDeviceProperties2-sType-unique", 221 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 222 } 223 ] 224 }, 225 "VkPhysicalDeviceIDProperties": { 226 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilities,VK_KHR_external_fence_capabilities)": [ 227 { 228 "vuid": "VUID-VkPhysicalDeviceIDProperties-sType-sType", 229 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES</code>" 230 } 231 ] 232 }, 233 "VkPhysicalDeviceDriverPropertiesKHR": { 234 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_KHR_driver_properties)": [ 235 { 236 "vuid": "VUID-VkPhysicalDeviceDriverPropertiesKHR-sType-sType", 237 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR</code>" 238 } 239 ] 240 }, 241 "VkPhysicalDevicePCIBusInfoPropertiesEXT": { 242 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_pci_bus_info)": [ 243 { 244 "vuid": "VUID-VkPhysicalDevicePCIBusInfoPropertiesEXT-sType-sType", 245 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT</code>" 246 } 247 ] 248 }, 249 "vkGetPhysicalDeviceQueueFamilyProperties": { 250 "core": [ 251 { 252 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter", 253 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 254 }, 255 { 256 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyPropertyCount-parameter", 257 "text": " <code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 258 }, 259 { 260 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyProperties-parameter", 261 "text": " If the value referenced by <code>pQueueFamilyPropertyCount</code> is not <code>0</code>, and <code>pQueueFamilyProperties</code> is not <code>NULL</code>, <code>pQueueFamilyProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pQueueFamilyPropertyCount</code> <code>VkQueueFamilyProperties</code> structures" 262 } 263 ] 264 }, 265 "vkGetPhysicalDeviceQueueFamilyProperties2": { 266 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 267 { 268 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter", 269 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 270 }, 271 { 272 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyPropertyCount-parameter", 273 "text": " <code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 274 }, 275 { 276 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyProperties-parameter", 277 "text": " If the value referenced by <code>pQueueFamilyPropertyCount</code> is not <code>0</code>, and <code>pQueueFamilyProperties</code> is not <code>NULL</code>, <code>pQueueFamilyProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pQueueFamilyPropertyCount</code> <code>VkQueueFamilyProperties2</code> structures" 278 } 279 ] 280 }, 281 "VkQueueFamilyProperties2": { 282 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 283 { 284 "vuid": "VUID-VkQueueFamilyProperties2-sType-sType", 285 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2</code>" 286 }, 287 { 288 "vuid": "VUID-VkQueueFamilyProperties2-pNext-pNext", 289 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkQueueFamilyCheckpointPropertiesNV\">VkQueueFamilyCheckpointPropertiesNV</a>" 290 } 291 ] 292 }, 293 "VkQueueFamilyCheckpointPropertiesNV": { 294 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_NV_device_diagnostic_checkpoints)": [ 295 { 296 "vuid": "VUID-VkQueueFamilyCheckpointPropertiesNV-sType-sType", 297 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV</code>" 298 } 299 ] 300 }, 301 "vkEnumeratePhysicalDeviceGroups": { 302 "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [ 303 { 304 "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-instance-parameter", 305 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 306 }, 307 { 308 "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupCount-parameter", 309 "text": " <code>pPhysicalDeviceGroupCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 310 }, 311 { 312 "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupProperties-parameter", 313 "text": " If the value referenced by <code>pPhysicalDeviceGroupCount</code> is not <code>0</code>, and <code>pPhysicalDeviceGroupProperties</code> is not <code>NULL</code>, <code>pPhysicalDeviceGroupProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPhysicalDeviceGroupCount</code> <code>VkPhysicalDeviceGroupProperties</code> structures" 314 } 315 ] 316 }, 317 "VkPhysicalDeviceGroupProperties": { 318 "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [ 319 { 320 "vuid": "VUID-VkPhysicalDeviceGroupProperties-sType-sType", 321 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES</code>" 322 }, 323 { 324 "vuid": "VUID-VkPhysicalDeviceGroupProperties-pNext-pNext", 325 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 326 } 327 ] 328 }, 329 "vkCreateDevice": { 330 "core": [ 331 { 332 "vuid": "VUID-vkCreateDevice-ppEnabledExtensionNames-01387", 333 "text": " All <a href=\"#extendingvulkan-extensions-extensiondependencies\">required extensions</a> for each extension in the <a href=\"#VkDeviceCreateInfo\">VkDeviceCreateInfo</a>::<code>ppEnabledExtensionNames</code> list <strong class=\"purple\">must</strong> also be present in that list." 334 }, 335 { 336 "vuid": "VUID-vkCreateDevice-physicalDevice-parameter", 337 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 338 }, 339 { 340 "vuid": "VUID-vkCreateDevice-pCreateInfo-parameter", 341 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceCreateInfo</code> structure" 342 }, 343 { 344 "vuid": "VUID-vkCreateDevice-pAllocator-parameter", 345 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 346 }, 347 { 348 "vuid": "VUID-vkCreateDevice-pDevice-parameter", 349 "text": " <code>pDevice</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDevice</code> handle" 350 } 351 ] 352 }, 353 "VkDeviceCreateInfo": { 354 "core": [ 355 { 356 "vuid": "VUID-VkDeviceCreateInfo-queueFamilyIndex-00372", 357 "text": "" 358 }, 359 { 360 "vuid": "VUID-VkDeviceCreateInfo-sType-sType", 361 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO</code>" 362 }, 363 { 364 "vuid": "VUID-VkDeviceCreateInfo-pNext-pNext", 365 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice8BitStorageFeaturesKHR\">VkPhysicalDevice8BitStorageFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferAddressFeaturesEXT\">VkPhysicalDeviceBufferAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesNV\">VkPhysicalDeviceComputeShaderDerivativesFeaturesNV</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFloat16Int8FeaturesKHR\">VkPhysicalDeviceFloat16Int8FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeaturesEXT\">VkPhysicalDeviceInlineUniformBlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeaturesEXT\">VkPhysicalDeviceScalarBlockLayoutFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64FeaturesKHR\">VkPhysicalDeviceShaderAtomicInt64FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderDrawParameterFeatures\">VkPhysicalDeviceShaderDrawParameterFeatures</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVariablePointerFeatures\">VkPhysicalDeviceVariablePointerFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeaturesKHR\">VkPhysicalDeviceVulkanMemoryModelFeaturesKHR</a>, or <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>" 366 }, 367 { 368 "vuid": "VUID-VkDeviceCreateInfo-sType-unique", 369 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 370 }, 371 { 372 "vuid": "VUID-VkDeviceCreateInfo-flags-zerobitmask", 373 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 374 }, 375 { 376 "vuid": "VUID-VkDeviceCreateInfo-pQueueCreateInfos-parameter", 377 "text": " <code>pQueueCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCreateInfoCount</code> valid <code>VkDeviceQueueCreateInfo</code> structures" 378 }, 379 { 380 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledLayerNames-parameter", 381 "text": " If <code>enabledLayerCount</code> is not <code>0</code>, <code>ppEnabledLayerNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledLayerCount</code> null-terminated UTF-8 strings" 382 }, 383 { 384 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-parameter", 385 "text": " If <code>enabledExtensionCount</code> is not <code>0</code>, <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledExtensionCount</code> null-terminated UTF-8 strings" 386 }, 387 { 388 "vuid": "VUID-VkDeviceCreateInfo-pEnabledFeatures-parameter", 389 "text": " If <code>pEnabledFeatures</code> is not <code>NULL</code>, <code>pEnabledFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceFeatures</code> structure" 390 }, 391 { 392 "vuid": "VUID-VkDeviceCreateInfo-queueCreateInfoCount-arraylength", 393 "text": " <code>queueCreateInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 394 } 395 ], 396 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 397 { 398 "vuid": "VUID-VkDeviceCreateInfo-pNext-00373", 399 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a> structure, then <code>pEnabledFeatures</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 400 } 401 ], 402 "(VK_AMD_negative_viewport_height)+(VK_VERSION_1_1)": [ 403 { 404 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-01840", 405 "text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain <code><a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a></code>" 406 } 407 ], 408 "(VK_AMD_negative_viewport_height)+!(VK_VERSION_1_1)+(VK_KHR_maintenance1)": [ 409 { 410 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-00374", 411 "text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain both <code><a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a></code> and <code><a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a></code>" 412 } 413 ] 414 }, 415 "VkDeviceGroupDeviceCreateInfo": { 416 "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [ 417 { 418 "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00375", 419 "text": " Each element of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be unique" 420 }, 421 { 422 "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00376", 423 "text": " All elements of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be in the same device group as enumerated by <a href=\"#vkEnumeratePhysicalDeviceGroups\">vkEnumeratePhysicalDeviceGroups</a>" 424 }, 425 { 426 "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-physicalDeviceCount-00377", 427 "text": " If <code>physicalDeviceCount</code> is not <code>0</code>, the <code>physicalDevice</code> parameter of <a href=\"#vkCreateDevice\">vkCreateDevice</a> <strong class=\"purple\">must</strong> be an element of <code>pPhysicalDevices</code>." 428 }, 429 { 430 "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-sType-sType", 431 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO</code>" 432 }, 433 { 434 "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-parameter", 435 "text": " If <code>physicalDeviceCount</code> is not <code>0</code>, <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>physicalDeviceCount</code> valid <code>VkPhysicalDevice</code> handles" 436 } 437 ] 438 }, 439 "VkDeviceMemoryOverallocationCreateInfoAMD": { 440 "(VK_AMD_memory_overallocation_behavior)": [ 441 { 442 "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-sType-sType", 443 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD</code>" 444 }, 445 { 446 "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-overallocationBehavior-parameter", 447 "text": " <code>overallocationBehavior</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMemoryOverallocationBehaviorAMD\">VkMemoryOverallocationBehaviorAMD</a> value" 448 } 449 ] 450 }, 451 "vkDestroyDevice": { 452 "core": [ 453 { 454 "vuid": "VUID-vkDestroyDevice-device-00378", 455 "text": " All child objects created on <code>device</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>device</code>" 456 }, 457 { 458 "vuid": "VUID-vkDestroyDevice-device-00379", 459 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>device</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 460 }, 461 { 462 "vuid": "VUID-vkDestroyDevice-device-00380", 463 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>device</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 464 }, 465 { 466 "vuid": "VUID-vkDestroyDevice-device-parameter", 467 "text": " If <code>device</code> is not <code>NULL</code>, <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 468 }, 469 { 470 "vuid": "VUID-vkDestroyDevice-pAllocator-parameter", 471 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 472 } 473 ] 474 }, 475 "VkDeviceQueueCreateInfo": { 476 "core": [ 477 { 478 "vuid": "VUID-VkDeviceQueueCreateInfo-queueFamilyIndex-00381", 479 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code>" 480 }, 481 { 482 "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-00382", 483 "text": " <code>queueCount</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>queueCount</code> member of the <code>VkQueueFamilyProperties</code> structure, as returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> in the <code>pQueueFamilyProperties</code>[<code>queueFamilyIndex</code>]" 484 }, 485 { 486 "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-00383", 487 "text": " Each element of <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code> inclusive" 488 }, 489 { 490 "vuid": "VUID-VkDeviceQueueCreateInfo-sType-sType", 491 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO</code>" 492 }, 493 { 494 "vuid": "VUID-VkDeviceQueueCreateInfo-pNext-pNext", 495 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceQueueGlobalPriorityCreateInfoEXT\">VkDeviceQueueGlobalPriorityCreateInfoEXT</a>" 496 }, 497 { 498 "vuid": "VUID-VkDeviceQueueCreateInfo-flags-parameter", 499 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values" 500 }, 501 { 502 "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter", 503 "text": " <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCount</code> <code>float</code> values" 504 }, 505 { 506 "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-arraylength", 507 "text": " <code>queueCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 508 } 509 ] 510 }, 511 "VkDeviceQueueGlobalPriorityCreateInfoEXT": { 512 "(VK_EXT_global_priority)": [ 513 { 514 "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-sType-sType", 515 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT</code>" 516 }, 517 { 518 "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-globalPriority-parameter", 519 "text": " <code>globalPriority</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueueGlobalPriorityEXT\">VkQueueGlobalPriorityEXT</a> value" 520 } 521 ] 522 }, 523 "vkGetDeviceQueue": { 524 "core": [ 525 { 526 "vuid": "VUID-vkGetDeviceQueue-queueFamilyIndex-00384", 527 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be one of the queue family indices specified when <code>device</code> was created, via the <code>VkDeviceQueueCreateInfo</code> structure" 528 }, 529 { 530 "vuid": "VUID-vkGetDeviceQueue-queueIndex-00385", 531 "text": " <code>queueIndex</code> <strong class=\"purple\">must</strong> be less than the number of queues created for the specified queue family index when <code>device</code> was created, via the <code>queueCount</code> member of the <code>VkDeviceQueueCreateInfo</code> structure" 532 }, 533 { 534 "vuid": "VUID-vkGetDeviceQueue-flags-01841", 535 "text": " <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a>::<code>flags</code> <strong class=\"purple\">must</strong> have been set to zero when <code>device</code> was created" 536 }, 537 { 538 "vuid": "VUID-vkGetDeviceQueue-device-parameter", 539 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 540 }, 541 { 542 "vuid": "VUID-vkGetDeviceQueue-pQueue-parameter", 543 "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueue</code> handle" 544 } 545 ] 546 }, 547 "vkGetDeviceQueue2": { 548 "(VK_VERSION_1_1)": [ 549 { 550 "vuid": "VUID-vkGetDeviceQueue2-device-parameter", 551 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 552 }, 553 { 554 "vuid": "VUID-vkGetDeviceQueue2-pQueueInfo-parameter", 555 "text": " <code>pQueueInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceQueueInfo2</code> structure" 556 }, 557 { 558 "vuid": "VUID-vkGetDeviceQueue2-pQueue-parameter", 559 "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueue</code> handle" 560 } 561 ] 562 }, 563 "VkDeviceQueueInfo2": { 564 "(VK_VERSION_1_1)": [ 565 { 566 "vuid": "VUID-VkDeviceQueueInfo2-queueFamilyIndex-01842", 567 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be one of the queue family indices specified when <code>device</code> was created, via the <code>VkDeviceQueueCreateInfo</code> structure" 568 }, 569 { 570 "vuid": "VUID-VkDeviceQueueInfo2-queueIndex-01843", 571 "text": " <code>queueIndex</code> <strong class=\"purple\">must</strong> be less than the number of queues created for the specified queue family index and <a href=\"#VkDeviceQueueCreateFlags\">VkDeviceQueueCreateFlags</a> member <code>flags</code> equal to this <code>flags</code> value when <code>device</code> was created, via the <code>queueCount</code> member of the <code>VkDeviceQueueCreateInfo</code> structure" 572 }, 573 { 574 "vuid": "VUID-VkDeviceQueueInfo2-sType-sType", 575 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2</code>" 576 }, 577 { 578 "vuid": "VUID-VkDeviceQueueInfo2-pNext-pNext", 579 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 580 }, 581 { 582 "vuid": "VUID-VkDeviceQueueInfo2-flags-parameter", 583 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values" 584 }, 585 { 586 "vuid": "VUID-VkDeviceQueueInfo2-flags-requiredbitmask", 587 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 588 } 589 ] 590 }, 591 "vkCreateCommandPool": { 592 "core": [ 593 { 594 "vuid": "VUID-vkCreateCommandPool-queueFamilyIndex-01937", 595 "text": " <code>pCreateInfo</code>::<code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be the index of a queue family available in the logical device <code>device</code>." 596 }, 597 { 598 "vuid": "VUID-vkCreateCommandPool-device-parameter", 599 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 600 }, 601 { 602 "vuid": "VUID-vkCreateCommandPool-pCreateInfo-parameter", 603 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandPoolCreateInfo</code> structure" 604 }, 605 { 606 "vuid": "VUID-vkCreateCommandPool-pAllocator-parameter", 607 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 608 }, 609 { 610 "vuid": "VUID-vkCreateCommandPool-pCommandPool-parameter", 611 "text": " <code>pCommandPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkCommandPool</code> handle" 612 } 613 ] 614 }, 615 "VkCommandPoolCreateInfo": { 616 "core": [ 617 { 618 "vuid": "VUID-VkCommandPoolCreateInfo-sType-sType", 619 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO</code>" 620 }, 621 { 622 "vuid": "VUID-VkCommandPoolCreateInfo-pNext-pNext", 623 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 624 }, 625 { 626 "vuid": "VUID-VkCommandPoolCreateInfo-flags-parameter", 627 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolCreateFlagBits\">VkCommandPoolCreateFlagBits</a> values" 628 } 629 ] 630 }, 631 "vkTrimCommandPool": { 632 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 633 { 634 "vuid": "VUID-vkTrimCommandPool-device-parameter", 635 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 636 }, 637 { 638 "vuid": "VUID-vkTrimCommandPool-commandPool-parameter", 639 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle" 640 }, 641 { 642 "vuid": "VUID-vkTrimCommandPool-flags-zerobitmask", 643 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 644 }, 645 { 646 "vuid": "VUID-vkTrimCommandPool-commandPool-parent", 647 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 648 } 649 ] 650 }, 651 "vkResetCommandPool": { 652 "core": [ 653 { 654 "vuid": "VUID-vkResetCommandPool-commandPool-00040", 655 "text": " All <code>VkCommandBuffer</code> objects allocated from <code>commandPool</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>" 656 }, 657 { 658 "vuid": "VUID-vkResetCommandPool-device-parameter", 659 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 660 }, 661 { 662 "vuid": "VUID-vkResetCommandPool-commandPool-parameter", 663 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle" 664 }, 665 { 666 "vuid": "VUID-vkResetCommandPool-flags-parameter", 667 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolResetFlagBits\">VkCommandPoolResetFlagBits</a> values" 668 }, 669 { 670 "vuid": "VUID-vkResetCommandPool-commandPool-parent", 671 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 672 } 673 ] 674 }, 675 "vkDestroyCommandPool": { 676 "core": [ 677 { 678 "vuid": "VUID-vkDestroyCommandPool-commandPool-00041", 679 "text": " All <code>VkCommandBuffer</code> objects allocated from <code>commandPool</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>." 680 }, 681 { 682 "vuid": "VUID-vkDestroyCommandPool-commandPool-00042", 683 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>commandPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 684 }, 685 { 686 "vuid": "VUID-vkDestroyCommandPool-commandPool-00043", 687 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>commandPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 688 }, 689 { 690 "vuid": "VUID-vkDestroyCommandPool-device-parameter", 691 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 692 }, 693 { 694 "vuid": "VUID-vkDestroyCommandPool-commandPool-parameter", 695 "text": " If <code>commandPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle" 696 }, 697 { 698 "vuid": "VUID-vkDestroyCommandPool-pAllocator-parameter", 699 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 700 }, 701 { 702 "vuid": "VUID-vkDestroyCommandPool-commandPool-parent", 703 "text": " If <code>commandPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 704 } 705 ] 706 }, 707 "vkAllocateCommandBuffers": { 708 "core": [ 709 { 710 "vuid": "VUID-vkAllocateCommandBuffers-device-parameter", 711 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 712 }, 713 { 714 "vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo-parameter", 715 "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandBufferAllocateInfo</code> structure" 716 }, 717 { 718 "vuid": "VUID-vkAllocateCommandBuffers-pCommandBuffers-parameter", 719 "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo</code>::commandBufferCount <code>VkCommandBuffer</code> handles" 720 } 721 ] 722 }, 723 "VkCommandBufferAllocateInfo": { 724 "core": [ 725 { 726 "vuid": "VUID-VkCommandBufferAllocateInfo-commandBufferCount-00044", 727 "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 728 }, 729 { 730 "vuid": "VUID-VkCommandBufferAllocateInfo-sType-sType", 731 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO</code>" 732 }, 733 { 734 "vuid": "VUID-VkCommandBufferAllocateInfo-pNext-pNext", 735 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 736 }, 737 { 738 "vuid": "VUID-VkCommandBufferAllocateInfo-commandPool-parameter", 739 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle" 740 }, 741 { 742 "vuid": "VUID-VkCommandBufferAllocateInfo-level-parameter", 743 "text": " <code>level</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBufferLevel\">VkCommandBufferLevel</a> value" 744 } 745 ] 746 }, 747 "vkResetCommandBuffer": { 748 "core": [ 749 { 750 "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00045", 751 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>" 752 }, 753 { 754 "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00046", 755 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been allocated from a pool that was created with the <code>VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT</code>" 756 }, 757 { 758 "vuid": "VUID-vkResetCommandBuffer-commandBuffer-parameter", 759 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 760 }, 761 { 762 "vuid": "VUID-vkResetCommandBuffer-flags-parameter", 763 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferResetFlagBits\">VkCommandBufferResetFlagBits</a> values" 764 } 765 ] 766 }, 767 "vkFreeCommandBuffers": { 768 "core": [ 769 { 770 "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00047", 771 "text": " All elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>" 772 }, 773 { 774 "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00048", 775 "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> <code>VkCommandBuffer</code> handles, each element of which <strong class=\"purple\">must</strong> either be a valid handle or <code>NULL</code>" 776 }, 777 { 778 "vuid": "VUID-vkFreeCommandBuffers-device-parameter", 779 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 780 }, 781 { 782 "vuid": "VUID-vkFreeCommandBuffers-commandPool-parameter", 783 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle" 784 }, 785 { 786 "vuid": "VUID-vkFreeCommandBuffers-commandBufferCount-arraylength", 787 "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 788 }, 789 { 790 "vuid": "VUID-vkFreeCommandBuffers-commandPool-parent", 791 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 792 }, 793 { 794 "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-parent", 795 "text": " Each element of <code>pCommandBuffers</code> that is a valid handle <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>commandPool</code>" 796 } 797 ] 798 }, 799 "vkBeginCommandBuffer": { 800 "core": [ 801 { 802 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00049", 803 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">recording or pending state</a>." 804 }, 805 { 806 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00050", 807 "text": " If <code>commandBuffer</code> was allocated from a <a href=\"#VkCommandPool\">VkCommandPool</a> which did not have the <code>VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT</code> flag set, <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">initial state</a>." 808 }, 809 { 810 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00051", 811 "text": " If <code>commandBuffer</code> is a secondary command buffer, the <code>pInheritanceInfo</code> member of <code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBufferInheritanceInfo</code> structure" 812 }, 813 { 814 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00052", 815 "text": " If <code>commandBuffer</code> is a secondary command buffer and either the <code>occlusionQueryEnable</code> member of the <code>pInheritanceInfo</code> member of <code>pBeginInfo</code> is <code>VK_FALSE</code>, or the precise occlusion queries feature is not enabled, the <code>queryFlags</code> member of the <code>pInheritanceInfo</code> member <code>pBeginInfo</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>" 816 }, 817 { 818 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-parameter", 819 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 820 }, 821 { 822 "vuid": "VUID-vkBeginCommandBuffer-pBeginInfo-parameter", 823 "text": " <code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandBufferBeginInfo</code> structure" 824 } 825 ] 826 }, 827 "VkCommandBufferBeginInfo": { 828 "core": [ 829 { 830 "vuid": "VUID-VkCommandBufferBeginInfo-flags-00053", 831 "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>renderPass</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code>" 832 }, 833 { 834 "vuid": "VUID-VkCommandBufferBeginInfo-flags-00054", 835 "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>subpass</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid subpass index within the <code>renderPass</code> member of <code>pInheritanceInfo</code>" 836 }, 837 { 838 "vuid": "VUID-VkCommandBufferBeginInfo-flags-00055", 839 "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>framebuffer</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be either <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, or a valid <code>VkFramebuffer</code> that is compatible with the <code>renderPass</code> member of <code>pInheritanceInfo</code>" 840 }, 841 { 842 "vuid": "VUID-VkCommandBufferBeginInfo-sType-sType", 843 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO</code>" 844 }, 845 { 846 "vuid": "VUID-VkCommandBufferBeginInfo-pNext-pNext", 847 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupCommandBufferBeginInfo\">VkDeviceGroupCommandBufferBeginInfo</a>" 848 }, 849 { 850 "vuid": "VUID-VkCommandBufferBeginInfo-flags-parameter", 851 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferUsageFlagBits\">VkCommandBufferUsageFlagBits</a> values" 852 } 853 ] 854 }, 855 "VkCommandBufferInheritanceInfo": { 856 "core": [ 857 { 858 "vuid": "VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056", 859 "text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is not enabled, <code>occlusionQueryEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 860 }, 861 { 862 "vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-00057", 863 "text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is enabled, <code>queryFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values" 864 }, 865 { 866 "vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058", 867 "text": " If the <a href=\"#features-pipelineStatisticsQuery\">pipeline statistics queries</a> feature is not enabled, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be <code>0</code>" 868 }, 869 { 870 "vuid": "VUID-VkCommandBufferInheritanceInfo-sType-sType", 871 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO</code>" 872 }, 873 { 874 "vuid": "VUID-VkCommandBufferInheritanceInfo-pNext-pNext", 875 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkCommandBufferInheritanceConditionalRenderingInfoEXT\">VkCommandBufferInheritanceConditionalRenderingInfoEXT</a>" 876 }, 877 { 878 "vuid": "VUID-VkCommandBufferInheritanceInfo-commonparent", 879 "text": " Both of <code>framebuffer</code>, and <code>renderPass</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 880 } 881 ] 882 }, 883 "VkCommandBufferInheritanceConditionalRenderingInfoEXT": { 884 "(VK_EXT_conditional_rendering)": [ 885 { 886 "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977", 887 "text": " If the <a href=\"#features-inheritedConditionalRendering\">inherited conditional rendering</a> feature is not enabled, <code>conditionalRenderingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 888 }, 889 { 890 "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-sType-sType", 891 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT</code>" 892 } 893 ] 894 }, 895 "vkEndCommandBuffer": { 896 "core": [ 897 { 898 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00059", 899 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>." 900 }, 901 { 902 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00060", 903 "text": " If <code>commandBuffer</code> is a primary command buffer, there <strong class=\"purple\">must</strong> not be an active render pass instance" 904 }, 905 { 906 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00061", 907 "text": " All queries made <a href=\"#queries-operation-active\">active</a> during the recording of <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been made inactive" 908 }, 909 { 910 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-parameter", 911 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 912 } 913 ], 914 "(VK_EXT_conditional_rendering)": [ 915 { 916 "vuid": "VUID-vkEndCommandBuffer-None-01978", 917 "text": " Conditional rendering must not be <a href=\"#active-conditional-rendering\">active</a>" 918 } 919 ], 920 "(VK_EXT_debug_utils)": [ 921 { 922 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-01815", 923 "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> not be an outstanding <a href=\"#vkCmdBeginDebugUtilsLabelEXT\">vkCmdBeginDebugUtilsLabelEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdEndDebugUtilsLabelEXT\">vkCmdEndDebugUtilsLabelEXT</a>." 924 } 925 ], 926 "(VK_EXT_debug_marker)": [ 927 { 928 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00062", 929 "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> not be an outstanding <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdDebugMarkerEndEXT\">vkCmdDebugMarkerEndEXT</a>." 930 } 931 ] 932 }, 933 "vkQueueSubmit": { 934 "core": [ 935 { 936 "vuid": "VUID-vkQueueSubmit-fence-00063", 937 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be unsignaled" 938 }, 939 { 940 "vuid": "VUID-vkQueueSubmit-fence-00064", 941 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue" 942 }, 943 { 944 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00065", 945 "text": " Any calls to <a href=\"#vkCmdSetEvent\">vkCmdSetEvent</a>, <a href=\"#vkCmdResetEvent\">vkCmdResetEvent</a> or <a href=\"#vkCmdWaitEvents\">vkCmdWaitEvents</a> that have been recorded into any of the command buffer elements of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code>, <strong class=\"purple\">must</strong> not reference any <a href=\"#VkEvent\">VkEvent</a> that is referenced by any of those commands in a command buffer that has been submitted to another queue and is still in the <em>pending state</em>." 946 }, 947 { 948 "vuid": "VUID-vkQueueSubmit-pWaitDstStageMask-00066", 949 "text": " Any stage flag included in any element of the <code>pWaitDstStageMask</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be a pipeline stage supported by one of the capabilities of <code>queue</code>, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>." 950 }, 951 { 952 "vuid": "VUID-vkQueueSubmit-pSignalSemaphores-00067", 953 "text": " Each element of the <code>pSignalSemaphores</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be unsignaled when the semaphore signal operation it defines is executed on the device" 954 }, 955 { 956 "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00068", 957 "text": " When a semaphore unsignal operation defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pSubmits</code> executes on <code>queue</code>, no other queue <strong class=\"purple\">must</strong> be waiting on the same semaphore." 958 }, 959 { 960 "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00069", 961 "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pSubmits</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> previously submitted for execution." 962 }, 963 { 964 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00070", 965 "text": " Each element of the <code>pCommandBuffers</code> member of each element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>." 966 }, 967 { 968 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00071", 969 "text": " If any element of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code>, it <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>." 970 }, 971 { 972 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00072", 973 "text": " Any <a href=\"#commandbuffers-secondary\">secondary command buffers recorded</a> into any element of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>." 974 }, 975 { 976 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00073", 977 "text": " If any <a href=\"#commandbuffers-secondary\">secondary command buffers recorded</a> into any element of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code>, it <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>." 978 }, 979 { 980 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00074", 981 "text": " Each element of the <code>pCommandBuffers</code> member of each element of <code>pSubmits</code> <strong class=\"purple\">must</strong> have been allocated from a <code>VkCommandPool</code> that was created for the same queue family <code>queue</code> belongs to." 982 }, 983 { 984 "vuid": "VUID-vkQueueSubmit-pSubmits-02207", 985 "text": " If any element of <code>pSubmits</code>→<code>pCommandBuffers</code> includes a <a href=\"#synchronization-queue-transfers-acquire\">Queue Family Transfer Acquire Operation</a>, there <strong class=\"purple\">must</strong> exist a previously submitted <a href=\"#synchronization-queue-transfers-release\">Queue Family Transfer Release Operation</a> on a queue in the queue family identified by the acquire operation, with parameters matching the acquire operation as defined in the definition of such <a href=\"#synchronization-queue-transfers-acquire\">acquire operations</a>, and which happens before the acquire operation." 986 }, 987 { 988 "vuid": "VUID-vkQueueSubmit-queue-parameter", 989 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle" 990 }, 991 { 992 "vuid": "VUID-vkQueueSubmit-pSubmits-parameter", 993 "text": " If <code>submitCount</code> is not <code>0</code>, <code>pSubmits</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>submitCount</code> valid <code>VkSubmitInfo</code> structures" 994 }, 995 { 996 "vuid": "VUID-vkQueueSubmit-fence-parameter", 997 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle" 998 }, 999 { 1000 "vuid": "VUID-vkQueueSubmit-commonparent", 1001 "text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 1002 } 1003 ] 1004 }, 1005 "VkSubmitInfo": { 1006 "core": [ 1007 { 1008 "vuid": "VUID-VkSubmitInfo-pCommandBuffers-00075", 1009 "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not have been allocated with <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>" 1010 }, 1011 { 1012 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00076", 1013 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 1014 }, 1015 { 1016 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00077", 1017 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 1018 }, 1019 { 1020 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00078", 1021 "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>." 1022 }, 1023 { 1024 "vuid": "VUID-VkSubmitInfo-sType-sType", 1025 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBMIT_INFO</code>" 1026 }, 1027 { 1028 "vuid": "VUID-VkSubmitInfo-pNext-pNext", 1029 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkD3D12FenceSubmitInfoKHR\">VkD3D12FenceSubmitInfoKHR</a>, <a href=\"#VkDeviceGroupSubmitInfo\">VkDeviceGroupSubmitInfo</a>, <a href=\"#VkProtectedSubmitInfo\">VkProtectedSubmitInfo</a>, <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoKHR\">VkWin32KeyedMutexAcquireReleaseInfoKHR</a>, or <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoNV\">VkWin32KeyedMutexAcquireReleaseInfoNV</a>" 1030 }, 1031 { 1032 "vuid": "VUID-VkSubmitInfo-sType-unique", 1033 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 1034 }, 1035 { 1036 "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-parameter", 1037 "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <code>VkSemaphore</code> handles" 1038 }, 1039 { 1040 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-parameter", 1041 "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid combinations of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 1042 }, 1043 { 1044 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-requiredbitmask", 1045 "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 1046 }, 1047 { 1048 "vuid": "VUID-VkSubmitInfo-pCommandBuffers-parameter", 1049 "text": " If <code>commandBufferCount</code> is not <code>0</code>, <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> valid <code>VkCommandBuffer</code> handles" 1050 }, 1051 { 1052 "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-parameter", 1053 "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> valid <code>VkSemaphore</code> handles" 1054 }, 1055 { 1056 "vuid": "VUID-VkSubmitInfo-commonparent", 1057 "text": " Each of the elements of <code>pCommandBuffers</code>, the elements of <code>pSignalSemaphores</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 1058 } 1059 ], 1060 "(VK_NV_mesh_shader)": [ 1061 { 1062 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02089", 1063 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 1064 }, 1065 { 1066 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02090", 1067 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 1068 } 1069 ] 1070 }, 1071 "VkD3D12FenceSubmitInfoKHR": { 1072 "(VK_KHR_external_semaphore_win32)": [ 1073 { 1074 "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-waitSemaphoreValuesCount-00079", 1075 "text": " <code>waitSemaphoreValuesCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkSubmitInfo</code>::<code>waitSemaphoreCount</code>, where <code>VkSubmitInfo</code> is in the <code>pNext</code> chain of this <code>VkD3D12FenceSubmitInfoKHR</code> structure." 1076 }, 1077 { 1078 "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-signalSemaphoreValuesCount-00080", 1079 "text": " <code>signalSemaphoreValuesCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkSubmitInfo</code>::<code>signalSemaphoreCount</code>, where <code>VkSubmitInfo</code> is in the <code>pNext</code> chain of this <code>VkD3D12FenceSubmitInfoKHR</code> structure." 1080 }, 1081 { 1082 "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-sType-sType", 1083 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR</code>" 1084 }, 1085 { 1086 "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pWaitSemaphoreValues-parameter", 1087 "text": " If <code>waitSemaphoreValuesCount</code> is not <code>0</code>, and <code>pWaitSemaphoreValues</code> is not <code>NULL</code>, <code>pWaitSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreValuesCount</code> <code>uint64_t</code> values" 1088 }, 1089 { 1090 "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pSignalSemaphoreValues-parameter", 1091 "text": " If <code>signalSemaphoreValuesCount</code> is not <code>0</code>, and <code>pSignalSemaphoreValues</code> is not <code>NULL</code>, <code>pSignalSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreValuesCount</code> <code>uint64_t</code> values" 1092 } 1093 ] 1094 }, 1095 "VkWin32KeyedMutexAcquireReleaseInfoKHR": { 1096 "(VK_KHR_win32_keyed_mutex)": [ 1097 { 1098 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-00081", 1099 "text": " Each member of <code>pAcquireSyncs</code> and <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a device memory object imported by setting <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>::<code>handleType</code> to <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>." 1100 }, 1101 { 1102 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-sType-sType", 1103 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR</code>" 1104 }, 1105 { 1106 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-parameter", 1107 "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <code>VkDeviceMemory</code> handles" 1108 }, 1109 { 1110 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireKeys-parameter", 1111 "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint64_t</code> values" 1112 }, 1113 { 1114 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireTimeouts-parameter", 1115 "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireTimeouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint32_t</code> values" 1116 }, 1117 { 1118 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseSyncs-parameter", 1119 "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <code>VkDeviceMemory</code> handles" 1120 }, 1121 { 1122 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseKeys-parameter", 1123 "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> <code>uint64_t</code> values" 1124 }, 1125 { 1126 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-commonparent", 1127 "text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 1128 } 1129 ] 1130 }, 1131 "VkWin32KeyedMutexAcquireReleaseInfoNV": { 1132 "(VK_NV_win32_keyed_mutex)": [ 1133 { 1134 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-sType-sType", 1135 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV</code>" 1136 }, 1137 { 1138 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireSyncs-parameter", 1139 "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <code>VkDeviceMemory</code> handles" 1140 }, 1141 { 1142 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireKeys-parameter", 1143 "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint64_t</code> values" 1144 }, 1145 { 1146 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireTimeoutMilliseconds-parameter", 1147 "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireTimeoutMilliseconds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint32_t</code> values" 1148 }, 1149 { 1150 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseSyncs-parameter", 1151 "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <code>VkDeviceMemory</code> handles" 1152 }, 1153 { 1154 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseKeys-parameter", 1155 "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> <code>uint64_t</code> values" 1156 }, 1157 { 1158 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-commonparent", 1159 "text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 1160 } 1161 ] 1162 }, 1163 "VkProtectedSubmitInfo": { 1164 "(VK_VERSION_1_1)": [ 1165 { 1166 "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01816", 1167 "text": " If the protected memory feature is not enabled, <code>protectedSubmit</code> <strong class=\"purple\">must</strong> not be <code>VK_TRUE</code>." 1168 }, 1169 { 1170 "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01817", 1171 "text": " If <code>protectedSubmit</code> is <code>VK_TRUE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be a protected command buffer." 1172 }, 1173 { 1174 "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01818", 1175 "text": " If <code>protectedSubmit</code> is <code>VK_FALSE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an unprotected command buffer." 1176 }, 1177 { 1178 "vuid": "VUID-VkProtectedSubmitInfo-pNext-01819", 1179 "text": " If the <code>VkSubmitInfo</code>::<code>pNext</code> chain does not include a <code>VkProtectedSubmitInfo</code> structure, then each element of the command buffer of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an unprotected command buffer." 1180 }, 1181 { 1182 "vuid": "VUID-VkProtectedSubmitInfo-sType-sType", 1183 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO</code>" 1184 } 1185 ] 1186 }, 1187 "VkDeviceGroupSubmitInfo": { 1188 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 1189 { 1190 "vuid": "VUID-VkDeviceGroupSubmitInfo-waitSemaphoreCount-00082", 1191 "text": " <code>waitSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>waitSemaphoreCount</code>" 1192 }, 1193 { 1194 "vuid": "VUID-VkDeviceGroupSubmitInfo-commandBufferCount-00083", 1195 "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>commandBufferCount</code>" 1196 }, 1197 { 1198 "vuid": "VUID-VkDeviceGroupSubmitInfo-signalSemaphoreCount-00084", 1199 "text": " <code>signalSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>signalSemaphoreCount</code>" 1200 }, 1201 { 1202 "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-00085", 1203 "text": " All elements of <code>pWaitSemaphoreDeviceIndices</code> and <code>pSignalSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices" 1204 }, 1205 { 1206 "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-00086", 1207 "text": " All elements of <code>pCommandBufferDeviceMasks</code> <strong class=\"purple\">must</strong> be valid device masks" 1208 }, 1209 { 1210 "vuid": "VUID-VkDeviceGroupSubmitInfo-sType-sType", 1211 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO</code>" 1212 }, 1213 { 1214 "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-parameter", 1215 "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> <code>uint32_t</code> values" 1216 }, 1217 { 1218 "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-parameter", 1219 "text": " If <code>commandBufferCount</code> is not <code>0</code>, <code>pCommandBufferDeviceMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> <code>uint32_t</code> values" 1220 }, 1221 { 1222 "vuid": "VUID-VkDeviceGroupSubmitInfo-pSignalSemaphoreDeviceIndices-parameter", 1223 "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> <code>uint32_t</code> values" 1224 } 1225 ] 1226 }, 1227 "vkCmdExecuteCommands": { 1228 "core": [ 1229 { 1230 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00087", 1231 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been allocated with a <code>level</code> of <code>VK_COMMAND_BUFFER_LEVEL_PRIMARY</code>" 1232 }, 1233 { 1234 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00088", 1235 "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been allocated with a <code>level</code> of <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>" 1236 }, 1237 { 1238 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00089", 1239 "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>." 1240 }, 1241 { 1242 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00090", 1243 "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, and it was recorded into any other primary command buffer, that primary command buffer <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>" 1244 }, 1245 { 1246 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00091", 1247 "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, it <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>." 1248 }, 1249 { 1250 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00092", 1251 "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, it <strong class=\"purple\">must</strong> not have already been recorded to <code>commandBuffer</code>." 1252 }, 1253 { 1254 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00093", 1255 "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, it <strong class=\"purple\">must</strong> not appear more than once in <code>pCommandBuffers</code>." 1256 }, 1257 { 1258 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00094", 1259 "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been allocated from a <code>VkCommandPool</code> that was created for the same queue family as the <code>VkCommandPool</code> from which <code>commandBuffer</code> was allocated" 1260 }, 1261 { 1262 "vuid": "VUID-vkCmdExecuteCommands-contents-00095", 1263 "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, that render pass instance <strong class=\"purple\">must</strong> have been begun with the <code>contents</code> parameter of <code>vkCmdBeginRenderPass</code> set to <code>VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS</code>" 1264 }, 1265 { 1266 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00096", 1267 "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with the <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>" 1268 }, 1269 { 1270 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00097", 1271 "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>subpass</code> set to the index of the subpass which the given command buffer will be executed in" 1272 }, 1273 { 1274 "vuid": "VUID-vkCmdExecuteCommands-pInheritanceInfo-00098", 1275 "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, the render passes specified in the <code>pBeginInfo</code>::<code>pInheritanceInfo</code>::<code>renderPass</code> members of the <a href=\"#vkBeginCommandBuffer\">vkBeginCommandBuffer</a> commands used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the current render pass." 1276 }, 1277 { 1278 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00099", 1279 "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, and any element of <code>pCommandBuffers</code> was recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>framebuffer</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, that <code>VkFramebuffer</code> <strong class=\"purple\">must</strong> match the <code>VkFramebuffer</code> used in the current render pass instance" 1280 }, 1281 { 1282 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00100", 1283 "text": " If <code>vkCmdExecuteCommands</code> is not being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not have been recorded with the <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>" 1284 }, 1285 { 1286 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00101", 1287 "text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is not enabled, <code>commandBuffer</code> <strong class=\"purple\">must</strong> not have any queries <a href=\"#queries-operation-active\">active</a>" 1288 }, 1289 { 1290 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00102", 1291 "text": " If <code>commandBuffer</code> has a <code>VK_QUERY_TYPE_OCCLUSION</code> query <a href=\"#queries-operation-active\">active</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>occlusionQueryEnable</code> set to <code>VK_TRUE</code>" 1292 }, 1293 { 1294 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00103", 1295 "text": " If <code>commandBuffer</code> has a <code>VK_QUERY_TYPE_OCCLUSION</code> query <a href=\"#queries-operation-active\">active</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>queryFlags</code> having all bits set that are set for the query" 1296 }, 1297 { 1298 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00104", 1299 "text": " If <code>commandBuffer</code> has a <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> query <a href=\"#queries-operation-active\">active</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>pipelineStatistics</code> having all bits set that are set in the <code>VkQueryPool</code> the query uses" 1300 }, 1301 { 1302 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00105", 1303 "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not begin any query types that are <a href=\"#queries-operation-active\">active</a> in <code>commandBuffer</code>" 1304 }, 1305 { 1306 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-parameter", 1307 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 1308 }, 1309 { 1310 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-parameter", 1311 "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> valid <code>VkCommandBuffer</code> handles" 1312 }, 1313 { 1314 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-recording", 1315 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 1316 }, 1317 { 1318 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-cmdpool", 1319 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 1320 }, 1321 { 1322 "vuid": "VUID-vkCmdExecuteCommands-bufferlevel", 1323 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>" 1324 }, 1325 { 1326 "vuid": "VUID-vkCmdExecuteCommands-commandBufferCount-arraylength", 1327 "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 1328 }, 1329 { 1330 "vuid": "VUID-vkCmdExecuteCommands-commonparent", 1331 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 1332 } 1333 ], 1334 "(VK_VERSION_1_1)": [ 1335 { 1336 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01820", 1337 "text": " If <code>commandBuffer</code> is a protected command buffer, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a protected command buffer." 1338 }, 1339 { 1340 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01821", 1341 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be an unprotected command buffer." 1342 } 1343 ], 1344 "(VK_EXT_transform_feedback)": [ 1345 { 1346 "vuid": "VUID-vkCmdExecuteCommands-None-02286", 1347 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active" 1348 } 1349 ] 1350 }, 1351 "VkDeviceGroupCommandBufferBeginInfo": { 1352 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 1353 { 1354 "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00106", 1355 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value" 1356 }, 1357 { 1358 "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00107", 1359 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero" 1360 }, 1361 { 1362 "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-sType-sType", 1363 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO</code>" 1364 } 1365 ] 1366 }, 1367 "vkCmdSetDeviceMask": { 1368 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 1369 { 1370 "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00108", 1371 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value" 1372 }, 1373 { 1374 "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00109", 1375 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero" 1376 }, 1377 { 1378 "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00110", 1379 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not include any set bits that were not in the <a href=\"#VkDeviceGroupCommandBufferBeginInfo\">VkDeviceGroupCommandBufferBeginInfo</a>::<code>deviceMask</code> value when the command buffer began recording." 1380 }, 1381 { 1382 "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00111", 1383 "text": " If <code>vkCmdSetDeviceMask</code> is called inside a render pass instance, <code>deviceMask</code> <strong class=\"purple\">must</strong> not include any set bits that were not in the <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>::<code>deviceMask</code> value when the render pass instance began recording." 1384 }, 1385 { 1386 "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-parameter", 1387 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 1388 }, 1389 { 1390 "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-recording", 1391 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 1392 }, 1393 { 1394 "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-cmdpool", 1395 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations" 1396 } 1397 ] 1398 }, 1399 "vkCreateFence": { 1400 "core": [ 1401 { 1402 "vuid": "VUID-vkCreateFence-device-parameter", 1403 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 1404 }, 1405 { 1406 "vuid": "VUID-vkCreateFence-pCreateInfo-parameter", 1407 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceCreateInfo</code> structure" 1408 }, 1409 { 1410 "vuid": "VUID-vkCreateFence-pAllocator-parameter", 1411 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 1412 }, 1413 { 1414 "vuid": "VUID-vkCreateFence-pFence-parameter", 1415 "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle" 1416 } 1417 ] 1418 }, 1419 "VkFenceCreateInfo": { 1420 "core": [ 1421 { 1422 "vuid": "VUID-VkFenceCreateInfo-sType-sType", 1423 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_CREATE_INFO</code>" 1424 }, 1425 { 1426 "vuid": "VUID-VkFenceCreateInfo-pNext-pNext", 1427 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a> or <a href=\"#VkExportFenceWin32HandleInfoKHR\">VkExportFenceWin32HandleInfoKHR</a>" 1428 }, 1429 { 1430 "vuid": "VUID-VkFenceCreateInfo-sType-unique", 1431 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 1432 }, 1433 { 1434 "vuid": "VUID-VkFenceCreateInfo-flags-parameter", 1435 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceCreateFlagBits\">VkFenceCreateFlagBits</a> values" 1436 } 1437 ] 1438 }, 1439 "VkExportFenceCreateInfo": { 1440 "(VK_VERSION_1_1,VK_KHR_external_fence)": [ 1441 { 1442 "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-01446", 1443 "text": " The bits in <code>handleTypes</code> must be supported and compatible, as reported by <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>." 1444 }, 1445 { 1446 "vuid": "VUID-VkExportFenceCreateInfo-sType-sType", 1447 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO</code>" 1448 }, 1449 { 1450 "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-parameter", 1451 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> values" 1452 } 1453 ] 1454 }, 1455 "VkExportFenceWin32HandleInfoKHR": { 1456 "(VK_KHR_external_fence_win32)": [ 1457 { 1458 "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-handleTypes-01447", 1459 "text": " If <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VkExportFenceWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a>." 1460 }, 1461 { 1462 "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-sType-sType", 1463 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>" 1464 }, 1465 { 1466 "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-pAttributes-parameter", 1467 "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value" 1468 } 1469 ] 1470 }, 1471 "vkGetFenceWin32HandleKHR": { 1472 "(VK_KHR_external_fence_win32)": [ 1473 { 1474 "vuid": "VUID-vkGetFenceWin32HandleKHR-device-parameter", 1475 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 1476 }, 1477 { 1478 "vuid": "VUID-vkGetFenceWin32HandleKHR-pGetWin32HandleInfo-parameter", 1479 "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceGetWin32HandleInfoKHR</code> structure" 1480 }, 1481 { 1482 "vuid": "VUID-vkGetFenceWin32HandleKHR-pHandle-parameter", 1483 "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value" 1484 } 1485 ] 1486 }, 1487 "VkFenceGetWin32HandleInfoKHR": { 1488 "(VK_KHR_external_fence_win32)": [ 1489 { 1490 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01448", 1491 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> when the <code>fence</code>’s current payload was created." 1492 }, 1493 { 1494 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01449", 1495 "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetFenceWin32HandleKHR\">vkGetFenceWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>fence</code> and <code>handleType</code>." 1496 }, 1497 { 1498 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-01450", 1499 "text": " <code>fence</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-fences-importing\">Importing Fence Payloads</a> unless that imported payload’s handle type was included in <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>." 1500 }, 1501 { 1502 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01451", 1503 "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>fence</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-fences-signaling\">fence signal operation</a> pending execution." 1504 }, 1505 { 1506 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01452", 1507 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle." 1508 }, 1509 { 1510 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-sType-sType", 1511 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR</code>" 1512 }, 1513 { 1514 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-pNext-pNext", 1515 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 1516 }, 1517 { 1518 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-parameter", 1519 "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle" 1520 }, 1521 { 1522 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter", 1523 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value" 1524 } 1525 ] 1526 }, 1527 "vkGetFenceFdKHR": { 1528 "(VK_KHR_external_fence_fd)": [ 1529 { 1530 "vuid": "VUID-vkGetFenceFdKHR-device-parameter", 1531 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 1532 }, 1533 { 1534 "vuid": "VUID-vkGetFenceFdKHR-pGetFdInfo-parameter", 1535 "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceGetFdInfoKHR</code> structure" 1536 }, 1537 { 1538 "vuid": "VUID-vkGetFenceFdKHR-pFd-parameter", 1539 "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>int</code> value" 1540 } 1541 ] 1542 }, 1543 "VkFenceGetFdInfoKHR": { 1544 "(VK_KHR_external_fence_fd)": [ 1545 { 1546 "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01453", 1547 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> when <code>fence</code>’s current payload was created." 1548 }, 1549 { 1550 "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01454", 1551 "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>fence</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-fences-signaling\">fence signal operation</a> pending execution." 1552 }, 1553 { 1554 "vuid": "VUID-VkFenceGetFdInfoKHR-fence-01455", 1555 "text": " <code>fence</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-fences-importing\">Importing Fence Payloads</a> unless that imported payload’s handle type was included in <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>." 1556 }, 1557 { 1558 "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01456", 1559 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle." 1560 }, 1561 { 1562 "vuid": "VUID-VkFenceGetFdInfoKHR-sType-sType", 1563 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR</code>" 1564 }, 1565 { 1566 "vuid": "VUID-VkFenceGetFdInfoKHR-pNext-pNext", 1567 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 1568 }, 1569 { 1570 "vuid": "VUID-VkFenceGetFdInfoKHR-fence-parameter", 1571 "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle" 1572 }, 1573 { 1574 "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-parameter", 1575 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value" 1576 } 1577 ] 1578 }, 1579 "vkDestroyFence": { 1580 "core": [ 1581 { 1582 "vuid": "VUID-vkDestroyFence-fence-01120", 1583 "text": " All <a href=\"#devsandqueues-submission\">queue submission</a> commands that refer to <code>fence</code> <strong class=\"purple\">must</strong> have completed execution" 1584 }, 1585 { 1586 "vuid": "VUID-vkDestroyFence-fence-01121", 1587 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>fence</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 1588 }, 1589 { 1590 "vuid": "VUID-vkDestroyFence-fence-01122", 1591 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>fence</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 1592 }, 1593 { 1594 "vuid": "VUID-vkDestroyFence-device-parameter", 1595 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 1596 }, 1597 { 1598 "vuid": "VUID-vkDestroyFence-fence-parameter", 1599 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle" 1600 }, 1601 { 1602 "vuid": "VUID-vkDestroyFence-pAllocator-parameter", 1603 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 1604 }, 1605 { 1606 "vuid": "VUID-vkDestroyFence-fence-parent", 1607 "text": " If <code>fence</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 1608 } 1609 ] 1610 }, 1611 "vkGetFenceStatus": { 1612 "core": [ 1613 { 1614 "vuid": "VUID-vkGetFenceStatus-device-parameter", 1615 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 1616 }, 1617 { 1618 "vuid": "VUID-vkGetFenceStatus-fence-parameter", 1619 "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle" 1620 }, 1621 { 1622 "vuid": "VUID-vkGetFenceStatus-fence-parent", 1623 "text": " <code>fence</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 1624 } 1625 ] 1626 }, 1627 "vkResetFences": { 1628 "core": [ 1629 { 1630 "vuid": "VUID-vkResetFences-pFences-01123", 1631 "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> not be currently associated with any queue command that has not yet completed execution on that queue" 1632 }, 1633 { 1634 "vuid": "VUID-vkResetFences-device-parameter", 1635 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 1636 }, 1637 { 1638 "vuid": "VUID-vkResetFences-pFences-parameter", 1639 "text": " <code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <code>VkFence</code> handles" 1640 }, 1641 { 1642 "vuid": "VUID-vkResetFences-fenceCount-arraylength", 1643 "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 1644 }, 1645 { 1646 "vuid": "VUID-vkResetFences-pFences-parent", 1647 "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 1648 } 1649 ] 1650 }, 1651 "vkWaitForFences": { 1652 "core": [ 1653 { 1654 "vuid": "VUID-vkWaitForFences-device-parameter", 1655 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 1656 }, 1657 { 1658 "vuid": "VUID-vkWaitForFences-pFences-parameter", 1659 "text": " <code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <code>VkFence</code> handles" 1660 }, 1661 { 1662 "vuid": "VUID-vkWaitForFences-fenceCount-arraylength", 1663 "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 1664 }, 1665 { 1666 "vuid": "VUID-vkWaitForFences-pFences-parent", 1667 "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 1668 } 1669 ] 1670 }, 1671 "vkRegisterDeviceEventEXT": { 1672 "(VK_EXT_display_control)": [ 1673 { 1674 "vuid": "VUID-vkRegisterDeviceEventEXT-device-parameter", 1675 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 1676 }, 1677 { 1678 "vuid": "VUID-vkRegisterDeviceEventEXT-pDeviceEventInfo-parameter", 1679 "text": " <code>pDeviceEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceEventInfoEXT</code> structure" 1680 }, 1681 { 1682 "vuid": "VUID-vkRegisterDeviceEventEXT-pAllocator-parameter", 1683 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 1684 }, 1685 { 1686 "vuid": "VUID-vkRegisterDeviceEventEXT-pFence-parameter", 1687 "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle" 1688 } 1689 ] 1690 }, 1691 "VkDeviceEventInfoEXT": { 1692 "(VK_EXT_display_control)": [ 1693 { 1694 "vuid": "VUID-VkDeviceEventInfoEXT-sType-sType", 1695 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT</code>" 1696 }, 1697 { 1698 "vuid": "VUID-VkDeviceEventInfoEXT-pNext-pNext", 1699 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 1700 }, 1701 { 1702 "vuid": "VUID-VkDeviceEventInfoEXT-deviceEvent-parameter", 1703 "text": " <code>deviceEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceEventTypeEXT\">VkDeviceEventTypeEXT</a> value" 1704 } 1705 ] 1706 }, 1707 "vkRegisterDisplayEventEXT": { 1708 "(VK_EXT_display_control)": [ 1709 { 1710 "vuid": "VUID-vkRegisterDisplayEventEXT-device-parameter", 1711 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 1712 }, 1713 { 1714 "vuid": "VUID-vkRegisterDisplayEventEXT-display-parameter", 1715 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle" 1716 }, 1717 { 1718 "vuid": "VUID-vkRegisterDisplayEventEXT-pDisplayEventInfo-parameter", 1719 "text": " <code>pDisplayEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayEventInfoEXT</code> structure" 1720 }, 1721 { 1722 "vuid": "VUID-vkRegisterDisplayEventEXT-pAllocator-parameter", 1723 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 1724 }, 1725 { 1726 "vuid": "VUID-vkRegisterDisplayEventEXT-pFence-parameter", 1727 "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle" 1728 } 1729 ] 1730 }, 1731 "VkDisplayEventInfoEXT": { 1732 "(VK_EXT_display_control)": [ 1733 { 1734 "vuid": "VUID-VkDisplayEventInfoEXT-sType-sType", 1735 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT</code>" 1736 }, 1737 { 1738 "vuid": "VUID-VkDisplayEventInfoEXT-pNext-pNext", 1739 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 1740 }, 1741 { 1742 "vuid": "VUID-VkDisplayEventInfoEXT-displayEvent-parameter", 1743 "text": " <code>displayEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayEventTypeEXT\">VkDisplayEventTypeEXT</a> value" 1744 } 1745 ] 1746 }, 1747 "vkImportFenceWin32HandleKHR": { 1748 "(VK_KHR_external_fence_win32)": [ 1749 { 1750 "vuid": "VUID-vkImportFenceWin32HandleKHR-device-parameter", 1751 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 1752 }, 1753 { 1754 "vuid": "VUID-vkImportFenceWin32HandleKHR-pImportFenceWin32HandleInfo-parameter", 1755 "text": " <code>pImportFenceWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportFenceWin32HandleInfoKHR</code> structure" 1756 } 1757 ] 1758 }, 1759 "VkImportFenceWin32HandleInfoKHR": { 1760 "(VK_KHR_external_fence_win32)": [ 1761 { 1762 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01457", 1763 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-fence-handletypes-win32\">Handle Types Supported by VkImportFenceWin32HandleInfoKHR</a> table." 1764 }, 1765 { 1766 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459", 1767 "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>." 1768 }, 1769 { 1770 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01460", 1771 "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>." 1772 }, 1773 { 1774 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01461", 1775 "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>." 1776 }, 1777 { 1778 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01462", 1779 "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>." 1780 }, 1781 { 1782 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01539", 1783 "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-fence-handle-types-compatibility\">external fence handle types compatibility</a>." 1784 }, 1785 { 1786 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-name-01540", 1787 "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-fence-handle-types-compatibility\">external fence handle types compatibility</a>." 1788 }, 1789 { 1790 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-sType-sType", 1791 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>" 1792 }, 1793 { 1794 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-pNext-pNext", 1795 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 1796 }, 1797 { 1798 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-fence-parameter", 1799 "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle" 1800 }, 1801 { 1802 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-flags-parameter", 1803 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values" 1804 }, 1805 { 1806 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-parameter", 1807 "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value" 1808 } 1809 ] 1810 }, 1811 "vkImportFenceFdKHR": { 1812 "(VK_KHR_external_fence_fd)": [ 1813 { 1814 "vuid": "VUID-vkImportFenceFdKHR-fence-01463", 1815 "text": " <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any queue command that has not yet completed execution on that queue" 1816 }, 1817 { 1818 "vuid": "VUID-vkImportFenceFdKHR-device-parameter", 1819 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 1820 }, 1821 { 1822 "vuid": "VUID-vkImportFenceFdKHR-pImportFenceFdInfo-parameter", 1823 "text": " <code>pImportFenceFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportFenceFdInfoKHR</code> structure" 1824 } 1825 ] 1826 }, 1827 "VkImportFenceFdInfoKHR": { 1828 "(VK_KHR_external_fence_fd)": [ 1829 { 1830 "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-01464", 1831 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-fence-handletypes-fd\">Handle Types Supported by VkImportFenceFdInfoKHR</a> table." 1832 }, 1833 { 1834 "vuid": "VUID-VkImportFenceFdInfoKHR-fd-01541", 1835 "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-fence-handle-types-compatibility\">external fence handle types compatibility</a>." 1836 }, 1837 { 1838 "vuid": "VUID-VkImportFenceFdInfoKHR-sType-sType", 1839 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR</code>" 1840 }, 1841 { 1842 "vuid": "VUID-VkImportFenceFdInfoKHR-pNext-pNext", 1843 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 1844 }, 1845 { 1846 "vuid": "VUID-VkImportFenceFdInfoKHR-fence-parameter", 1847 "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle" 1848 }, 1849 { 1850 "vuid": "VUID-VkImportFenceFdInfoKHR-flags-parameter", 1851 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values" 1852 }, 1853 { 1854 "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-parameter", 1855 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value" 1856 } 1857 ] 1858 }, 1859 "vkCreateSemaphore": { 1860 "core": [ 1861 { 1862 "vuid": "VUID-vkCreateSemaphore-device-parameter", 1863 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 1864 }, 1865 { 1866 "vuid": "VUID-vkCreateSemaphore-pCreateInfo-parameter", 1867 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreCreateInfo</code> structure" 1868 }, 1869 { 1870 "vuid": "VUID-vkCreateSemaphore-pAllocator-parameter", 1871 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 1872 }, 1873 { 1874 "vuid": "VUID-vkCreateSemaphore-pSemaphore-parameter", 1875 "text": " <code>pSemaphore</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSemaphore</code> handle" 1876 } 1877 ] 1878 }, 1879 "VkSemaphoreCreateInfo": { 1880 "core": [ 1881 { 1882 "vuid": "VUID-VkSemaphoreCreateInfo-sType-sType", 1883 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO</code>" 1884 }, 1885 { 1886 "vuid": "VUID-VkSemaphoreCreateInfo-pNext-pNext", 1887 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a> or <a href=\"#VkExportSemaphoreWin32HandleInfoKHR\">VkExportSemaphoreWin32HandleInfoKHR</a>" 1888 }, 1889 { 1890 "vuid": "VUID-VkSemaphoreCreateInfo-sType-unique", 1891 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 1892 }, 1893 { 1894 "vuid": "VUID-VkSemaphoreCreateInfo-flags-zerobitmask", 1895 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 1896 } 1897 ] 1898 }, 1899 "VkExportSemaphoreCreateInfo": { 1900 "(VK_VERSION_1_1,VK_KHR_external_semaphore)": [ 1901 { 1902 "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-01124", 1903 "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>." 1904 }, 1905 { 1906 "vuid": "VUID-VkExportSemaphoreCreateInfo-sType-sType", 1907 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO</code>" 1908 }, 1909 { 1910 "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-parameter", 1911 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> values" 1912 } 1913 ] 1914 }, 1915 "VkExportSemaphoreWin32HandleInfoKHR": { 1916 "(VK_KHR_external_semaphore_win32)": [ 1917 { 1918 "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-handleTypes-01125", 1919 "text": " If <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT</code>, <code>VkExportSemaphoreWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>." 1920 }, 1921 { 1922 "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-sType-sType", 1923 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>" 1924 }, 1925 { 1926 "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-pAttributes-parameter", 1927 "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value" 1928 } 1929 ] 1930 }, 1931 "vkGetSemaphoreWin32HandleKHR": { 1932 "(VK_KHR_external_semaphore_win32)": [ 1933 { 1934 "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-device-parameter", 1935 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 1936 }, 1937 { 1938 "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pGetWin32HandleInfo-parameter", 1939 "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreGetWin32HandleInfoKHR</code> structure" 1940 }, 1941 { 1942 "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pHandle-parameter", 1943 "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value" 1944 } 1945 ] 1946 }, 1947 "VkSemaphoreGetWin32HandleInfoKHR": { 1948 "(VK_KHR_external_semaphore_win32)": [ 1949 { 1950 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01126", 1951 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> when the <code>semaphore</code>’s current payload was created." 1952 }, 1953 { 1954 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01127", 1955 "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetSemaphoreWin32HandleKHR\">vkGetSemaphoreWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>semaphore</code> and <code>handleType</code>." 1956 }, 1957 { 1958 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-01128", 1959 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a> unless that imported payload’s handle type was included in <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>." 1960 }, 1961 { 1962 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01129", 1963 "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, as defined below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a>, there <strong class=\"purple\">must</strong> be no queue waiting on <code>semaphore</code>." 1964 }, 1965 { 1966 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01130", 1967 "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-semaphores-signaling\">semaphore signal operation</a> pending execution." 1968 }, 1969 { 1970 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01131", 1971 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle." 1972 }, 1973 { 1974 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-sType-sType", 1975 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR</code>" 1976 }, 1977 { 1978 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-pNext-pNext", 1979 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 1980 }, 1981 { 1982 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-parameter", 1983 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle" 1984 }, 1985 { 1986 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter", 1987 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value" 1988 } 1989 ] 1990 }, 1991 "vkGetSemaphoreFdKHR": { 1992 "(VK_KHR_external_semaphore_fd)": [ 1993 { 1994 "vuid": "VUID-vkGetSemaphoreFdKHR-device-parameter", 1995 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 1996 }, 1997 { 1998 "vuid": "VUID-vkGetSemaphoreFdKHR-pGetFdInfo-parameter", 1999 "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreGetFdInfoKHR</code> structure" 2000 }, 2001 { 2002 "vuid": "VUID-vkGetSemaphoreFdKHR-pFd-parameter", 2003 "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>int</code> value" 2004 } 2005 ] 2006 }, 2007 "VkSemaphoreGetFdInfoKHR": { 2008 "(VK_KHR_external_semaphore_fd)": [ 2009 { 2010 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01132", 2011 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> when <code>semaphore</code>’s current payload was created." 2012 }, 2013 { 2014 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-01133", 2015 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a> unless that imported payload’s handle type was included in <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>." 2016 }, 2017 { 2018 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01134", 2019 "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, as defined below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a>, there <strong class=\"purple\">must</strong> be no queue waiting on <code>semaphore</code>." 2020 }, 2021 { 2022 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01135", 2023 "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-semaphores-signaling\">semaphore signal operation</a> pending execution." 2024 }, 2025 { 2026 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01136", 2027 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle." 2028 }, 2029 { 2030 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-sType-sType", 2031 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR</code>" 2032 }, 2033 { 2034 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-pNext-pNext", 2035 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2036 }, 2037 { 2038 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-parameter", 2039 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle" 2040 }, 2041 { 2042 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter", 2043 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value" 2044 } 2045 ] 2046 }, 2047 "vkDestroySemaphore": { 2048 "core": [ 2049 { 2050 "vuid": "VUID-vkDestroySemaphore-semaphore-01137", 2051 "text": " All submitted batches that refer to <code>semaphore</code> <strong class=\"purple\">must</strong> have completed execution" 2052 }, 2053 { 2054 "vuid": "VUID-vkDestroySemaphore-semaphore-01138", 2055 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>semaphore</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 2056 }, 2057 { 2058 "vuid": "VUID-vkDestroySemaphore-semaphore-01139", 2059 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>semaphore</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2060 }, 2061 { 2062 "vuid": "VUID-vkDestroySemaphore-device-parameter", 2063 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 2064 }, 2065 { 2066 "vuid": "VUID-vkDestroySemaphore-semaphore-parameter", 2067 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle" 2068 }, 2069 { 2070 "vuid": "VUID-vkDestroySemaphore-pAllocator-parameter", 2071 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 2072 }, 2073 { 2074 "vuid": "VUID-vkDestroySemaphore-semaphore-parent", 2075 "text": " If <code>semaphore</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 2076 } 2077 ] 2078 }, 2079 "vkImportSemaphoreWin32HandleKHR": { 2080 "(VK_KHR_external_semaphore_win32)": [ 2081 { 2082 "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-device-parameter", 2083 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 2084 }, 2085 { 2086 "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-pImportSemaphoreWin32HandleInfo-parameter", 2087 "text": " <code>pImportSemaphoreWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportSemaphoreWin32HandleInfoKHR</code> structure" 2088 } 2089 ] 2090 }, 2091 "VkImportSemaphoreWin32HandleInfoKHR": { 2092 "(VK_KHR_external_semaphore_win32)": [ 2093 { 2094 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140", 2095 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-win32\">Handle Types Supported by VkImportSemaphoreWin32HandleInfoKHR</a> table." 2096 }, 2097 { 2098 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466", 2099 "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>." 2100 }, 2101 { 2102 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01467", 2103 "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>." 2104 }, 2105 { 2106 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01468", 2107 "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>." 2108 }, 2109 { 2110 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01469", 2111 "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>." 2112 }, 2113 { 2114 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542", 2115 "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>." 2116 }, 2117 { 2118 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543", 2119 "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>." 2120 }, 2121 { 2122 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-sType-sType", 2123 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>" 2124 }, 2125 { 2126 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-pNext-pNext", 2127 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2128 }, 2129 { 2130 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-semaphore-parameter", 2131 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle" 2132 }, 2133 { 2134 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-parameter", 2135 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values" 2136 }, 2137 { 2138 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-parameter", 2139 "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value" 2140 } 2141 ] 2142 }, 2143 "vkImportSemaphoreFdKHR": { 2144 "(VK_KHR_external_semaphore_fd)": [ 2145 { 2146 "vuid": "VUID-vkImportSemaphoreFdKHR-semaphore-01142", 2147 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not be associated with any queue command that has not yet completed execution on that queue" 2148 }, 2149 { 2150 "vuid": "VUID-vkImportSemaphoreFdKHR-device-parameter", 2151 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 2152 }, 2153 { 2154 "vuid": "VUID-vkImportSemaphoreFdKHR-pImportSemaphoreFdInfo-parameter", 2155 "text": " <code>pImportSemaphoreFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportSemaphoreFdInfoKHR</code> structure" 2156 } 2157 ] 2158 }, 2159 "VkImportSemaphoreFdInfoKHR": { 2160 "(VK_KHR_external_semaphore_fd)": [ 2161 { 2162 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-01143", 2163 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-fd\">Handle Types Supported by VkImportSemaphoreFdInfoKHR</a> table." 2164 }, 2165 { 2166 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-fd-01544", 2167 "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>." 2168 }, 2169 { 2170 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-sType-sType", 2171 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR</code>" 2172 }, 2173 { 2174 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-pNext-pNext", 2175 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2176 }, 2177 { 2178 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-semaphore-parameter", 2179 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle" 2180 }, 2181 { 2182 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-parameter", 2183 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values" 2184 }, 2185 { 2186 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-parameter", 2187 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value" 2188 } 2189 ] 2190 }, 2191 "vkCreateEvent": { 2192 "core": [ 2193 { 2194 "vuid": "VUID-vkCreateEvent-device-parameter", 2195 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 2196 }, 2197 { 2198 "vuid": "VUID-vkCreateEvent-pCreateInfo-parameter", 2199 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkEventCreateInfo</code> structure" 2200 }, 2201 { 2202 "vuid": "VUID-vkCreateEvent-pAllocator-parameter", 2203 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 2204 }, 2205 { 2206 "vuid": "VUID-vkCreateEvent-pEvent-parameter", 2207 "text": " <code>pEvent</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkEvent</code> handle" 2208 } 2209 ] 2210 }, 2211 "VkEventCreateInfo": { 2212 "core": [ 2213 { 2214 "vuid": "VUID-VkEventCreateInfo-sType-sType", 2215 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EVENT_CREATE_INFO</code>" 2216 }, 2217 { 2218 "vuid": "VUID-VkEventCreateInfo-pNext-pNext", 2219 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2220 }, 2221 { 2222 "vuid": "VUID-VkEventCreateInfo-flags-zerobitmask", 2223 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 2224 } 2225 ] 2226 }, 2227 "vkDestroyEvent": { 2228 "core": [ 2229 { 2230 "vuid": "VUID-vkDestroyEvent-event-01145", 2231 "text": " All submitted commands that refer to <code>event</code> <strong class=\"purple\">must</strong> have completed execution" 2232 }, 2233 { 2234 "vuid": "VUID-vkDestroyEvent-event-01146", 2235 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 2236 }, 2237 { 2238 "vuid": "VUID-vkDestroyEvent-event-01147", 2239 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2240 }, 2241 { 2242 "vuid": "VUID-vkDestroyEvent-device-parameter", 2243 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 2244 }, 2245 { 2246 "vuid": "VUID-vkDestroyEvent-event-parameter", 2247 "text": " If <code>event</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle" 2248 }, 2249 { 2250 "vuid": "VUID-vkDestroyEvent-pAllocator-parameter", 2251 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 2252 }, 2253 { 2254 "vuid": "VUID-vkDestroyEvent-event-parent", 2255 "text": " If <code>event</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 2256 } 2257 ] 2258 }, 2259 "vkGetEventStatus": { 2260 "core": [ 2261 { 2262 "vuid": "VUID-vkGetEventStatus-device-parameter", 2263 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 2264 }, 2265 { 2266 "vuid": "VUID-vkGetEventStatus-event-parameter", 2267 "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle" 2268 }, 2269 { 2270 "vuid": "VUID-vkGetEventStatus-event-parent", 2271 "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 2272 } 2273 ] 2274 }, 2275 "vkSetEvent": { 2276 "core": [ 2277 { 2278 "vuid": "VUID-vkSetEvent-device-parameter", 2279 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 2280 }, 2281 { 2282 "vuid": "VUID-vkSetEvent-event-parameter", 2283 "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle" 2284 }, 2285 { 2286 "vuid": "VUID-vkSetEvent-event-parent", 2287 "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 2288 } 2289 ] 2290 }, 2291 "vkResetEvent": { 2292 "core": [ 2293 { 2294 "vuid": "VUID-vkResetEvent-event-01148", 2295 "text": " <code>event</code> <strong class=\"purple\">must</strong> not be waited on by a <code>vkCmdWaitEvents</code> command that is currently executing" 2296 }, 2297 { 2298 "vuid": "VUID-vkResetEvent-device-parameter", 2299 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 2300 }, 2301 { 2302 "vuid": "VUID-vkResetEvent-event-parameter", 2303 "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle" 2304 }, 2305 { 2306 "vuid": "VUID-vkResetEvent-event-parent", 2307 "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 2308 } 2309 ] 2310 }, 2311 "vkCmdSetEvent": { 2312 "core": [ 2313 { 2314 "vuid": "VUID-vkCmdSetEvent-stageMask-01149", 2315 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>" 2316 }, 2317 { 2318 "vuid": "VUID-vkCmdSetEvent-stageMask-01150", 2319 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 2320 }, 2321 { 2322 "vuid": "VUID-vkCmdSetEvent-stageMask-01151", 2323 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 2324 }, 2325 { 2326 "vuid": "VUID-vkCmdSetEvent-commandBuffer-parameter", 2327 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 2328 }, 2329 { 2330 "vuid": "VUID-vkCmdSetEvent-event-parameter", 2331 "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle" 2332 }, 2333 { 2334 "vuid": "VUID-vkCmdSetEvent-stageMask-parameter", 2335 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 2336 }, 2337 { 2338 "vuid": "VUID-vkCmdSetEvent-stageMask-requiredbitmask", 2339 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 2340 }, 2341 { 2342 "vuid": "VUID-vkCmdSetEvent-commandBuffer-recording", 2343 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 2344 }, 2345 { 2346 "vuid": "VUID-vkCmdSetEvent-commandBuffer-cmdpool", 2347 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 2348 }, 2349 { 2350 "vuid": "VUID-vkCmdSetEvent-renderpass", 2351 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 2352 }, 2353 { 2354 "vuid": "VUID-vkCmdSetEvent-commonparent", 2355 "text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 2356 } 2357 ], 2358 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 2359 { 2360 "vuid": "VUID-vkCmdSetEvent-commandBuffer-01152", 2361 "text": " <code>commandBuffer</code>’s current device mask <strong class=\"purple\">must</strong> include exactly one physical device." 2362 } 2363 ], 2364 "(VK_NV_mesh_shader)": [ 2365 { 2366 "vuid": "VUID-vkCmdSetEvent-stageMask-02107", 2367 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 2368 }, 2369 { 2370 "vuid": "VUID-vkCmdSetEvent-stageMask-02108", 2371 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 2372 } 2373 ] 2374 }, 2375 "vkCmdResetEvent": { 2376 "core": [ 2377 { 2378 "vuid": "VUID-vkCmdResetEvent-stageMask-01153", 2379 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>" 2380 }, 2381 { 2382 "vuid": "VUID-vkCmdResetEvent-stageMask-01154", 2383 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 2384 }, 2385 { 2386 "vuid": "VUID-vkCmdResetEvent-stageMask-01155", 2387 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 2388 }, 2389 { 2390 "vuid": "VUID-vkCmdResetEvent-event-01156", 2391 "text": " When this command executes, <code>event</code> <strong class=\"purple\">must</strong> not be waited on by a <code>vkCmdWaitEvents</code> command that is currently executing" 2392 }, 2393 { 2394 "vuid": "VUID-vkCmdResetEvent-commandBuffer-parameter", 2395 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 2396 }, 2397 { 2398 "vuid": "VUID-vkCmdResetEvent-event-parameter", 2399 "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle" 2400 }, 2401 { 2402 "vuid": "VUID-vkCmdResetEvent-stageMask-parameter", 2403 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 2404 }, 2405 { 2406 "vuid": "VUID-vkCmdResetEvent-stageMask-requiredbitmask", 2407 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 2408 }, 2409 { 2410 "vuid": "VUID-vkCmdResetEvent-commandBuffer-recording", 2411 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 2412 }, 2413 { 2414 "vuid": "VUID-vkCmdResetEvent-commandBuffer-cmdpool", 2415 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 2416 }, 2417 { 2418 "vuid": "VUID-vkCmdResetEvent-renderpass", 2419 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 2420 }, 2421 { 2422 "vuid": "VUID-vkCmdResetEvent-commonparent", 2423 "text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 2424 } 2425 ], 2426 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 2427 { 2428 "vuid": "VUID-vkCmdResetEvent-commandBuffer-01157", 2429 "text": " <code>commandBuffer</code>’s current device mask <strong class=\"purple\">must</strong> include exactly one physical device." 2430 } 2431 ], 2432 "(VK_NV_mesh_shader)": [ 2433 { 2434 "vuid": "VUID-vkCmdResetEvent-stageMask-02109", 2435 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 2436 }, 2437 { 2438 "vuid": "VUID-vkCmdResetEvent-stageMask-02110", 2439 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 2440 } 2441 ] 2442 }, 2443 "vkCmdWaitEvents": { 2444 "core": [ 2445 { 2446 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01158", 2447 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be the bitwise OR of the <code>stageMask</code> parameter used in previous calls to <code>vkCmdSetEvent</code> with any of the members of <code>pEvents</code> and <code>VK_PIPELINE_STAGE_HOST_BIT</code> if any of the members of <code>pEvents</code> was set using <code>vkSetEvent</code>" 2448 }, 2449 { 2450 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01159", 2451 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 2452 }, 2453 { 2454 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-01160", 2455 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 2456 }, 2457 { 2458 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01161", 2459 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 2460 }, 2461 { 2462 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-01162", 2463 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 2464 }, 2465 { 2466 "vuid": "VUID-vkCmdWaitEvents-pEvents-01163", 2467 "text": " If <code>pEvents</code> includes one or more events that will be signaled by <code>vkSetEvent</code> after <code>commandBuffer</code> has been submitted to a queue, then <code>vkCmdWaitEvents</code> <strong class=\"purple\">must</strong> not be called inside a render pass instance" 2468 }, 2469 { 2470 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01164", 2471 "text": " Any pipeline stage included in <code>srcStageMask</code> or <code>dstStageMask</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>." 2472 }, 2473 { 2474 "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-01165", 2475 "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>srcAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>." 2476 }, 2477 { 2478 "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-01166", 2479 "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>dstAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>." 2480 }, 2481 { 2482 "vuid": "VUID-vkCmdWaitEvents-commandBuffer-parameter", 2483 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 2484 }, 2485 { 2486 "vuid": "VUID-vkCmdWaitEvents-pEvents-parameter", 2487 "text": " <code>pEvents</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>eventCount</code> valid <code>VkEvent</code> handles" 2488 }, 2489 { 2490 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-parameter", 2491 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 2492 }, 2493 { 2494 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-requiredbitmask", 2495 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 2496 }, 2497 { 2498 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-parameter", 2499 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 2500 }, 2501 { 2502 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-requiredbitmask", 2503 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 2504 }, 2505 { 2506 "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-parameter", 2507 "text": " If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <code>VkMemoryBarrier</code> structures" 2508 }, 2509 { 2510 "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter", 2511 "text": " If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <code>VkBufferMemoryBarrier</code> structures" 2512 }, 2513 { 2514 "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter", 2515 "text": " If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <code>VkImageMemoryBarrier</code> structures" 2516 }, 2517 { 2518 "vuid": "VUID-vkCmdWaitEvents-commandBuffer-recording", 2519 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 2520 }, 2521 { 2522 "vuid": "VUID-vkCmdWaitEvents-commandBuffer-cmdpool", 2523 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 2524 }, 2525 { 2526 "vuid": "VUID-vkCmdWaitEvents-eventCount-arraylength", 2527 "text": " <code>eventCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 2528 }, 2529 { 2530 "vuid": "VUID-vkCmdWaitEvents-commonparent", 2531 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pEvents</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 2532 } 2533 ], 2534 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 2535 { 2536 "vuid": "VUID-vkCmdWaitEvents-commandBuffer-01167", 2537 "text": " <code>commandBuffer</code>’s current device mask <strong class=\"purple\">must</strong> include exactly one physical device." 2538 } 2539 ], 2540 "(VK_NV_mesh_shader)": [ 2541 { 2542 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-02111", 2543 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 2544 }, 2545 { 2546 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-02112", 2547 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 2548 }, 2549 { 2550 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-02113", 2551 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 2552 }, 2553 { 2554 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-02114", 2555 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 2556 } 2557 ] 2558 }, 2559 "vkCmdPipelineBarrier": { 2560 "core": [ 2561 { 2562 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01168", 2563 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 2564 }, 2565 { 2566 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01169", 2567 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 2568 }, 2569 { 2570 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01170", 2571 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 2572 }, 2573 { 2574 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01171", 2575 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 2576 }, 2577 { 2578 "vuid": "VUID-vkCmdPipelineBarrier-pDependencies-02285", 2579 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the render pass <strong class=\"purple\">must</strong> have been created with at least one <code>VkSubpassDependency</code> instance in <code>VkRenderPassCreateInfo</code>::<code>pDependencies</code> that expresses a dependency from the current subpass to itself, and for which <code>srcStageMask</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>srcStageMask</code>, <code>dstStageMask</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>dstStageMask</code>, <code>dependencyFlags</code> is equal to <code>VkSubpassDependency</code>::<code>dependencyFlags</code>, <code>srcAccessMask</code> member of each element of <code>pMemoryBarriers</code> and <code>pImageMemoryBarriers</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>srcAccessMask</code>, and <code>dstAccessMask</code> member of each element of <code>pMemoryBarriers</code> and <code>pImageMemoryBarriers</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>dstAccessMask</code>" 2580 }, 2581 { 2582 "vuid": "VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178", 2583 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, <code>bufferMemoryBarrierCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 2584 }, 2585 { 2586 "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-01181", 2587 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of an element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal" 2588 }, 2589 { 2590 "vuid": "VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182", 2591 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>" 2592 }, 2593 { 2594 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01183", 2595 "text": " Any pipeline stage included in <code>srcStageMask</code> or <code>dstStageMask</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>." 2596 }, 2597 { 2598 "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-01184", 2599 "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> and <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>srcAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>." 2600 }, 2601 { 2602 "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-01185", 2603 "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> and <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>dstAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>." 2604 }, 2605 { 2606 "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-parameter", 2607 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 2608 }, 2609 { 2610 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-parameter", 2611 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 2612 }, 2613 { 2614 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-requiredbitmask", 2615 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 2616 }, 2617 { 2618 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-parameter", 2619 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 2620 }, 2621 { 2622 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-requiredbitmask", 2623 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 2624 }, 2625 { 2626 "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-parameter", 2627 "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values" 2628 }, 2629 { 2630 "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter", 2631 "text": " If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <code>VkMemoryBarrier</code> structures" 2632 }, 2633 { 2634 "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter", 2635 "text": " If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <code>VkBufferMemoryBarrier</code> structures" 2636 }, 2637 { 2638 "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter", 2639 "text": " If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <code>VkImageMemoryBarrier</code> structures" 2640 }, 2641 { 2642 "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-recording", 2643 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 2644 }, 2645 { 2646 "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool", 2647 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 2648 } 2649 ], 2650 "(VK_KHR_depth_stencil_resolve)": [ 2651 { 2652 "vuid": "VUID-vkCmdPipelineBarrier-image-02635", 2653 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>image</code> member of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to one of the elements of <code>pAttachments</code> that the current <code>framebuffer</code> was created with, that is also referred to by one of the elements of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance or by the <code>pDepthStencilResolveAttachment</code> member of the <code>VkSubpassDescriptionDepthStencilResolveKHR</code> structure that the current subpass was created with" 2654 }, 2655 { 2656 "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-02636", 2657 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to the <code>layout</code> member of an element of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance or by the <code>pDepthStencilResolveAttachment</code> member of the <code>VkSubpassDescriptionDepthStencilResolveKHR</code> structure that the current subpass was created with, that refers to the same <code>image</code>" 2658 } 2659 ], 2660 "!(VK_KHR_depth_stencil_resolve)": [ 2661 { 2662 "vuid": "VUID-vkCmdPipelineBarrier-image-02637", 2663 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>image</code> member of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to one of the elements of <code>pAttachments</code> that the current <code>framebuffer</code> was created with, that is also referred to by one of the elements of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance that the current subpass was created with" 2664 }, 2665 { 2666 "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-02638", 2667 "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to the <code>layout</code> member of an element of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance that the current subpass was created with, that refers to the same <code>image</code>" 2668 } 2669 ], 2670 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 2671 { 2672 "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-01186", 2673 "text": " If <code>vkCmdPipelineBarrier</code> is called outside of a render pass instance, <code>dependencyFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>" 2674 } 2675 ], 2676 "(VK_NV_mesh_shader)": [ 2677 { 2678 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-02115", 2679 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 2680 }, 2681 { 2682 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-02116", 2683 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 2684 }, 2685 { 2686 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-02117", 2687 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 2688 }, 2689 { 2690 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-02118", 2691 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 2692 } 2693 ] 2694 }, 2695 "VkMemoryBarrier": { 2696 "core": [ 2697 { 2698 "vuid": "VUID-VkMemoryBarrier-sType-sType", 2699 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_BARRIER</code>" 2700 }, 2701 { 2702 "vuid": "VUID-VkMemoryBarrier-pNext-pNext", 2703 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2704 }, 2705 { 2706 "vuid": "VUID-VkMemoryBarrier-srcAccessMask-parameter", 2707 "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 2708 }, 2709 { 2710 "vuid": "VUID-VkMemoryBarrier-dstAccessMask-parameter", 2711 "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 2712 } 2713 ] 2714 }, 2715 "VkBufferMemoryBarrier": { 2716 "core": [ 2717 { 2718 "vuid": "VUID-VkBufferMemoryBarrier-offset-01187", 2719 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>" 2720 }, 2721 { 2722 "vuid": "VUID-VkBufferMemoryBarrier-size-01188", 2723 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 2724 }, 2725 { 2726 "vuid": "VUID-VkBufferMemoryBarrier-size-01189", 2727 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to than the size of <code>buffer</code> minus <code>offset</code>" 2728 }, 2729 { 2730 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01196", 2731 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not <code>VK_QUEUE_FAMILY_IGNORED</code>, at least one of them <strong class=\"purple\">must</strong> be the same as the family of the queue that will execute this barrier" 2732 }, 2733 { 2734 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01931", 2735 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 2736 }, 2737 { 2738 "vuid": "VUID-VkBufferMemoryBarrier-sType-sType", 2739 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER</code>" 2740 }, 2741 { 2742 "vuid": "VUID-VkBufferMemoryBarrier-pNext-pNext", 2743 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2744 }, 2745 { 2746 "vuid": "VUID-VkBufferMemoryBarrier-srcAccessMask-parameter", 2747 "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 2748 }, 2749 { 2750 "vuid": "VUID-VkBufferMemoryBarrier-dstAccessMask-parameter", 2751 "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 2752 }, 2753 { 2754 "vuid": "VUID-VkBufferMemoryBarrier-buffer-parameter", 2755 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 2756 } 2757 ], 2758 "!(VK_VERSION_1_1,VK_KHR_external_memory)": [ 2759 { 2760 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01190", 2761 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be <code>VK_QUEUE_FAMILY_IGNORED</code>" 2762 }, 2763 { 2764 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01192", 2765 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> either both be <code>VK_QUEUE_FAMILY_IGNORED</code>, or both be a valid queue family (see <a href=\"#devsandqueues-queueprops\">Queue Family Properties</a>)" 2766 } 2767 ], 2768 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 2769 { 2770 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01191", 2771 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, at least one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>" 2772 }, 2773 { 2774 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01763", 2775 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or a special queue family reserved for external memory ownership transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>." 2776 }, 2777 { 2778 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01193", 2779 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> also be <code>VK_QUEUE_FAMILY_IGNORED</code>" 2780 }, 2781 { 2782 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01764", 2783 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>." 2784 }, 2785 { 2786 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01765", 2787 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>dstQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>." 2788 } 2789 ] 2790 }, 2791 "VkImageMemoryBarrier": { 2792 "core": [ 2793 { 2794 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01197", 2795 "text": " <code>oldLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or the current layout of the image subresources affected by the barrier" 2796 }, 2797 { 2798 "vuid": "VUID-VkImageMemoryBarrier-newLayout-01198", 2799 "text": " <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>" 2800 }, 2801 { 2802 "vuid": "VUID-VkImageMemoryBarrier-image-01205", 2803 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not <code>VK_QUEUE_FAMILY_IGNORED</code>, at least one of them <strong class=\"purple\">must</strong> be the same as the family of the queue that will execute this barrier" 2804 }, 2805 { 2806 "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01486", 2807 "text": " <code>subresourceRange.baseMipLevel</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 2808 }, 2809 { 2810 "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01724", 2811 "text": " If <code>subresourceRange.levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, <span class=\"eq\"><code>subresourceRange.baseMipLevel</code> + <code>subresourceRange.levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 2812 }, 2813 { 2814 "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01488", 2815 "text": " <code>subresourceRange.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 2816 }, 2817 { 2818 "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01725", 2819 "text": " If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> + <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 2820 }, 2821 { 2822 "vuid": "VUID-VkImageMemoryBarrier-image-01207", 2823 "text": " If <code>image</code> has a depth/stencil format with both depth and stencil components, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" 2824 }, 2825 { 2826 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01208", 2827 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> set" 2828 }, 2829 { 2830 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01209", 2831 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set" 2832 }, 2833 { 2834 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01210", 2835 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set" 2836 }, 2837 { 2838 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01211", 2839 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set" 2840 }, 2841 { 2842 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01212", 2843 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> set" 2844 }, 2845 { 2846 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01213", 2847 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> set" 2848 }, 2849 { 2850 "vuid": "VUID-VkImageMemoryBarrier-image-01932", 2851 "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 2852 }, 2853 { 2854 "vuid": "VUID-VkImageMemoryBarrier-sType-sType", 2855 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER</code>" 2856 }, 2857 { 2858 "vuid": "VUID-VkImageMemoryBarrier-pNext-pNext", 2859 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a>" 2860 }, 2861 { 2862 "vuid": "VUID-VkImageMemoryBarrier-srcAccessMask-parameter", 2863 "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 2864 }, 2865 { 2866 "vuid": "VUID-VkImageMemoryBarrier-dstAccessMask-parameter", 2867 "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 2868 }, 2869 { 2870 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-parameter", 2871 "text": " <code>oldLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 2872 }, 2873 { 2874 "vuid": "VUID-VkImageMemoryBarrier-newLayout-parameter", 2875 "text": " <code>newLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 2876 }, 2877 { 2878 "vuid": "VUID-VkImageMemoryBarrier-image-parameter", 2879 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 2880 }, 2881 { 2882 "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-parameter", 2883 "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceRange</code> structure" 2884 } 2885 ], 2886 "!(VK_VERSION_1_1,VK_KHR_external_memory)": [ 2887 { 2888 "vuid": "VUID-VkImageMemoryBarrier-image-01199", 2889 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be <code>VK_QUEUE_FAMILY_IGNORED</code>" 2890 }, 2891 { 2892 "vuid": "VUID-VkImageMemoryBarrier-image-01200", 2893 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> either both be <code>VK_QUEUE_FAMILY_IGNORED</code>, or both be a valid queue family (see <a href=\"#devsandqueues-queueprops\">Queue Family Properties</a>)." 2894 } 2895 ], 2896 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 2897 { 2898 "vuid": "VUID-VkImageMemoryBarrier-image-01381", 2899 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, at least one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>" 2900 }, 2901 { 2902 "vuid": "VUID-VkImageMemoryBarrier-image-01766", 2903 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>." 2904 }, 2905 { 2906 "vuid": "VUID-VkImageMemoryBarrier-image-01201", 2907 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> also be <code>VK_QUEUE_FAMILY_IGNORED</code>." 2908 }, 2909 { 2910 "vuid": "VUID-VkImageMemoryBarrier-image-01767", 2911 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>." 2912 }, 2913 { 2914 "vuid": "VUID-VkImageMemoryBarrier-image-01768", 2915 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>dstQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>." 2916 } 2917 ], 2918 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 2919 { 2920 "vuid": "VUID-VkImageMemoryBarrier-image-01671", 2921 "text": " If <code>image</code> has a single-plane color format or is not <em>disjoint</em>, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 2922 }, 2923 { 2924 "vuid": "VUID-VkImageMemoryBarrier-image-01672", 2925 "text": " If <code>image</code> has a multi-planar format and the image is <em>disjoint</em>, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include either at least one of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>; or <strong class=\"purple\">must</strong> include <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 2926 }, 2927 { 2928 "vuid": "VUID-VkImageMemoryBarrier-image-01673", 2929 "text": " If <code>image</code> has a multi-planar format with only two planes, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" 2930 } 2931 ], 2932 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 2933 { 2934 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01658", 2935 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set" 2936 }, 2937 { 2938 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01659", 2939 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set" 2940 } 2941 ], 2942 "(VK_NV_shading_rate_image)": [ 2943 { 2944 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-02088", 2945 "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code> set" 2946 } 2947 ] 2948 }, 2949 "vkQueueWaitIdle": { 2950 "core": [ 2951 { 2952 "vuid": "VUID-vkQueueWaitIdle-queue-parameter", 2953 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle" 2954 } 2955 ] 2956 }, 2957 "vkDeviceWaitIdle": { 2958 "core": [ 2959 { 2960 "vuid": "VUID-vkDeviceWaitIdle-device-parameter", 2961 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 2962 } 2963 ] 2964 }, 2965 "vkGetCalibratedTimestampsEXT": { 2966 "(VK_EXT_calibrated_timestamps)": [ 2967 { 2968 "vuid": "VUID-vkGetCalibratedTimestampsEXT-device-parameter", 2969 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 2970 }, 2971 { 2972 "vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestampInfos-parameter", 2973 "text": " <code>pTimestampInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>timestampCount</code> valid <code>VkCalibratedTimestampInfoEXT</code> structures" 2974 }, 2975 { 2976 "vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestamps-parameter", 2977 "text": " <code>pTimestamps</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>timestampCount</code> <code>uint64_t</code> values" 2978 }, 2979 { 2980 "vuid": "VUID-vkGetCalibratedTimestampsEXT-pMaxDeviation-parameter", 2981 "text": " <code>pMaxDeviation</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value" 2982 }, 2983 { 2984 "vuid": "VUID-vkGetCalibratedTimestampsEXT-timestampCount-arraylength", 2985 "text": " <code>timestampCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 2986 } 2987 ] 2988 }, 2989 "VkCalibratedTimestampInfoEXT": { 2990 "(VK_EXT_calibrated_timestamps)": [ 2991 { 2992 "vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-02354", 2993 "text": " <code>timeDomain</code> <strong class=\"purple\">must</strong> be one of the <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> values returned by <a href=\"#vkGetPhysicalDeviceCalibrateableTimeDomainsEXT\">vkGetPhysicalDeviceCalibrateableTimeDomainsEXT</a>" 2994 }, 2995 { 2996 "vuid": "VUID-VkCalibratedTimestampInfoEXT-sType-sType", 2997 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT</code>" 2998 }, 2999 { 3000 "vuid": "VUID-VkCalibratedTimestampInfoEXT-pNext-pNext", 3001 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 3002 }, 3003 { 3004 "vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-parameter", 3005 "text": " <code>timeDomain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> value" 3006 } 3007 ] 3008 }, 3009 "vkCreateRenderPass": { 3010 "core": [ 3011 { 3012 "vuid": "VUID-vkCreateRenderPass-device-parameter", 3013 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 3014 }, 3015 { 3016 "vuid": "VUID-vkCreateRenderPass-pCreateInfo-parameter", 3017 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassCreateInfo</code> structure" 3018 }, 3019 { 3020 "vuid": "VUID-vkCreateRenderPass-pAllocator-parameter", 3021 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 3022 }, 3023 { 3024 "vuid": "VUID-vkCreateRenderPass-pRenderPass-parameter", 3025 "text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkRenderPass</code> handle" 3026 } 3027 ] 3028 }, 3029 "VkRenderPassCreateInfo": { 3030 "core": [ 3031 { 3032 "vuid": "VUID-VkRenderPassCreateInfo-attachment-00834", 3033 "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or any element of <code>pPreserveAttachments</code> in any element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, it <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>" 3034 }, 3035 { 3036 "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-00836", 3037 "text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>." 3038 }, 3039 { 3040 "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-02511", 3041 "text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>." 3042 }, 3043 { 3044 "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00837", 3045 "text": " For any element of <code>pDependencies</code>, if the <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>srcStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass" 3046 }, 3047 { 3048 "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00838", 3049 "text": " For any element of <code>pDependencies</code>, if the <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>dstStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass" 3050 }, 3051 { 3052 "vuid": "VUID-VkRenderPassCreateInfo-srcSubpass-02517", 3053 "text": " The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>" 3054 }, 3055 { 3056 "vuid": "VUID-VkRenderPassCreateInfo-dstSubpass-02518", 3057 "text": " The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>" 3058 }, 3059 { 3060 "vuid": "VUID-VkRenderPassCreateInfo-sType-sType", 3061 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO</code>" 3062 }, 3063 { 3064 "vuid": "VUID-VkRenderPassCreateInfo-pNext-pNext", 3065 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>, <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, or <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>" 3066 }, 3067 { 3068 "vuid": "VUID-VkRenderPassCreateInfo-sType-unique", 3069 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 3070 }, 3071 { 3072 "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-parameter", 3073 "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkAttachmentDescription</code> structures" 3074 }, 3075 { 3076 "vuid": "VUID-VkRenderPassCreateInfo-pSubpasses-parameter", 3077 "text": " <code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <code>VkSubpassDescription</code> structures" 3078 }, 3079 { 3080 "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-parameter", 3081 "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pDependencies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> valid <code>VkSubpassDependency</code> structures" 3082 }, 3083 { 3084 "vuid": "VUID-VkRenderPassCreateInfo-subpassCount-arraylength", 3085 "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 3086 } 3087 ], 3088 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 3089 { 3090 "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01566", 3091 "text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>." 3092 }, 3093 { 3094 "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01567", 3095 "text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>." 3096 }, 3097 { 3098 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01926", 3099 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, the <code>subpass</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>" 3100 }, 3101 { 3102 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01927", 3103 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, the <code>inputAttachmentIndex</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than the value of <code>inputAttachmentCount</code> in the member of <code>pSubpasses</code> identified by its <code>subpass</code> member" 3104 }, 3105 { 3106 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01963", 3107 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, for any element of the <code>pInputAttachments</code> member of any element of <code>pSubpasses</code> where the <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, the <code>aspectMask</code> member of the corresponding element of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>::<code>pAspectReferences</code> <strong class=\"purple\">must</strong> only include aspects that are present in images of the format specified by the element of <code>pAttachments</code> at <code>attachment</code>" 3108 } 3109 ], 3110 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 3111 { 3112 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01928", 3113 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and its <code>subpassCount</code> member is not zero, that member <strong class=\"purple\">must</strong> be equal to the value of <code>subpassCount</code>" 3114 }, 3115 { 3116 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01929", 3117 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, if its <code>dependencyCount</code> member is not zero, it <strong class=\"purple\">must</strong> be equal to <code>dependencyCount</code>" 3118 }, 3119 { 3120 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01930", 3121 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, for each non-zero element of <code>pViewOffsets</code>, the <code>srcSubpass</code> and <code>dstSubpass</code> members of <code>pDependencies</code> at the same index <strong class=\"purple\">must</strong> not be equal" 3122 }, 3123 { 3124 "vuid": "VUID-VkRenderPassCreateInfo-pNext-02512", 3125 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, for any element of <code>pDependencies</code> with a <code>dependencyFlags</code> member that doesn’t include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, the corresponding element of the <code>pViewOffsets</code> member of that <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> instance <strong class=\"purple\">must</strong> be <code>0</code>" 3126 }, 3127 { 3128 "vuid": "VUID-VkRenderPassCreateInfo-pNext-02513", 3129 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, elements of its <code>pViewMasks</code> member <strong class=\"purple\">must</strong> either all be <code>0</code>, or all not be <code>0</code>" 3130 }, 3131 { 3132 "vuid": "VUID-VkRenderPassCreateInfo-pNext-02514", 3133 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and each element of its <code>pViewMasks</code> member is <code>0</code>, the <code>dependencyFlags</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>" 3134 }, 3135 { 3136 "vuid": "VUID-VkRenderPassCreateInfo-pNext-02515", 3137 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and each element of its <code>pViewMasks</code> member is <code>0</code>, <code>correlatedViewMaskCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 3138 }, 3139 { 3140 "vuid": "VUID-VkRenderPassCreateInfo-pNext-02516", 3141 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, each element of its <code>pViewMask</code> member <strong class=\"purple\">must</strong> not include a bit at a position greater than the value of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxFramebufferLayers</code>" 3142 } 3143 ] 3144 }, 3145 "VkRenderPassMultiviewCreateInfo": { 3146 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 3147 { 3148 "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-00841", 3149 "text": " Each view index <strong class=\"purple\">must</strong> not be set in more than one element of <code>pCorrelationMasks</code>" 3150 }, 3151 { 3152 "vuid": "VUID-VkRenderPassMultiviewCreateInfo-sType-sType", 3153 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO</code>" 3154 }, 3155 { 3156 "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-parameter", 3157 "text": " If <code>subpassCount</code> is not <code>0</code>, <code>pViewMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> <code>uint32_t</code> values" 3158 }, 3159 { 3160 "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewOffsets-parameter", 3161 "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pViewOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> <code>int32_t</code> values" 3162 }, 3163 { 3164 "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-parameter", 3165 "text": " If <code>correlationMaskCount</code> is not <code>0</code>, <code>pCorrelationMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>correlationMaskCount</code> <code>uint32_t</code> values" 3166 } 3167 ] 3168 }, 3169 "VkRenderPassFragmentDensityMapCreateInfoEXT": { 3170 "(VK_EXT_fragment_density_map)": [ 3171 { 3172 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02547", 3173 "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> be less than <code>VkRenderPassCreateInfo</code>::<code>attachmentCount</code>" 3174 }, 3175 { 3176 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02548", 3177 "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> not be an element of <code>VkSubpassDescription</code>::<code>pInputAttachments</code>, <code>VkSubpassDescription</code>::<code>pColorAttachments</code>, <code>VkSubpassDescription</code>::<code>pResolveAttachments</code>, <code>VkSubpassDescription</code>::<code>pDepthStencilAttachment</code>, or <code>VkSubpassDescription</code>::<code>pPreserveAttachments</code> for any subpass" 3178 }, 3179 { 3180 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02549", 3181 "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> be equal to <code>VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT</code>, or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 3182 }, 3183 { 3184 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02550", 3185 "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> reference an attachment with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_LOAD</code> or <code>VK_ATTACHMENT_LOAD_OP_DONT_CARE</code>." 3186 }, 3187 { 3188 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02551", 3189 "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> reference an attachment with a <code>storeOp</code> equal to <code>VK_ATTACHMENT_STORE_OP_DONT_CARE</code>." 3190 }, 3191 { 3192 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-sType-sType", 3193 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT</code>" 3194 }, 3195 { 3196 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-parameter", 3197 "text": " <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> be a valid <code>VkAttachmentReference</code> structure" 3198 } 3199 ] 3200 }, 3201 "VkAttachmentDescription": { 3202 "core": [ 3203 { 3204 "vuid": "VUID-VkAttachmentDescription-finalLayout-00843", 3205 "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>" 3206 }, 3207 { 3208 "vuid": "VUID-VkAttachmentDescription-flags-parameter", 3209 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values" 3210 }, 3211 { 3212 "vuid": "VUID-VkAttachmentDescription-format-parameter", 3213 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 3214 }, 3215 { 3216 "vuid": "VUID-VkAttachmentDescription-samples-parameter", 3217 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 3218 }, 3219 { 3220 "vuid": "VUID-VkAttachmentDescription-loadOp-parameter", 3221 "text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value" 3222 }, 3223 { 3224 "vuid": "VUID-VkAttachmentDescription-storeOp-parameter", 3225 "text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value" 3226 }, 3227 { 3228 "vuid": "VUID-VkAttachmentDescription-stencilLoadOp-parameter", 3229 "text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value" 3230 }, 3231 { 3232 "vuid": "VUID-VkAttachmentDescription-stencilStoreOp-parameter", 3233 "text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value" 3234 }, 3235 { 3236 "vuid": "VUID-VkAttachmentDescription-initialLayout-parameter", 3237 "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 3238 }, 3239 { 3240 "vuid": "VUID-VkAttachmentDescription-finalLayout-parameter", 3241 "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 3242 } 3243 ] 3244 }, 3245 "VkRenderPassInputAttachmentAspectCreateInfo": { 3246 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 3247 { 3248 "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-sType-sType", 3249 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO</code>" 3250 }, 3251 { 3252 "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-pAspectReferences-parameter", 3253 "text": " <code>pAspectReferences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>aspectReferenceCount</code> valid <code>VkInputAttachmentAspectReference</code> structures" 3254 }, 3255 { 3256 "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-aspectReferenceCount-arraylength", 3257 "text": " <code>aspectReferenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 3258 } 3259 ] 3260 }, 3261 "VkInputAttachmentAspectReference": { 3262 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 3263 { 3264 "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-01964", 3265 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>" 3266 }, 3267 { 3268 "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-parameter", 3269 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values" 3270 }, 3271 { 3272 "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-requiredbitmask", 3273 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 3274 } 3275 ], 3276 "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_image_drm_format_modifier)": [ 3277 { 3278 "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-02250", 3279 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT for any index <em>i</em>." 3280 } 3281 ] 3282 }, 3283 "VkSubpassDescription": { 3284 "core": [ 3285 { 3286 "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-00844", 3287 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 3288 }, 3289 { 3290 "vuid": "VUID-VkSubpassDescription-colorAttachmentCount-00845", 3291 "text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>" 3292 }, 3293 { 3294 "vuid": "VUID-VkSubpassDescription-loadOp-00846", 3295 "text": " If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then <code>loadOp</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>" 3296 }, 3297 { 3298 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00847", 3299 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>" 3300 }, 3301 { 3302 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00848", 3303 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>" 3304 }, 3305 { 3306 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00849", 3307 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>" 3308 }, 3309 { 3310 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00850", 3311 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkFormat\">VkFormat</a> as its corresponding color attachment" 3312 }, 3313 { 3314 "vuid": "VUID-VkSubpassDescription-pColorAttachments-01417", 3315 "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same sample count" 3316 }, 3317 { 3318 "vuid": "VUID-VkSubpassDescription-pInputAttachments-02647", 3319 "text": " All attachments in <code>pInputAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have formats whose features contain at least one of <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>." 3320 }, 3321 { 3322 "vuid": "VUID-VkSubpassDescription-pColorAttachments-02648", 3323 "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have formats whose features contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>" 3324 }, 3325 { 3326 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-02649", 3327 "text": " All attachments in <code>pResolveAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have formats whose features contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>" 3328 }, 3329 { 3330 "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-02650", 3331 "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code> and the attachment is not <code>VK_ATTACHMENT_UNUSED</code> then it <strong class=\"purple\">must</strong> have a format whose features contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 3332 }, 3333 { 3334 "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-01418", 3335 "text": " If neither the <code>VK_AMD_mixed_attachment_samples</code> nor the <code>VK_NV_framebuffer_mixed_samples</code> extensions are enabled, and if <code>pDepthStencilAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code> and any attachments in <code>pColorAttachments</code> are not <code>VK_ATTACHMENT_UNUSED</code>, they <strong class=\"purple\">must</strong> have the same sample count" 3336 }, 3337 { 3338 "vuid": "VUID-VkSubpassDescription-attachment-00853", 3339 "text": " The <code>attachment</code> member of each element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>" 3340 }, 3341 { 3342 "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-00854", 3343 "text": " Each element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not also be an element of any other member of the subpass description" 3344 }, 3345 { 3346 "vuid": "VUID-VkSubpassDescription-layout-02519", 3347 "text": " If any attachment is used by more than one <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> member, then each use <strong class=\"purple\">must</strong> use the same <code>layout</code>" 3348 }, 3349 { 3350 "vuid": "VUID-VkSubpassDescription-flags-parameter", 3351 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values" 3352 }, 3353 { 3354 "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-parameter", 3355 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 3356 }, 3357 { 3358 "vuid": "VUID-VkSubpassDescription-pInputAttachments-parameter", 3359 "text": " If <code>inputAttachmentCount</code> is not <code>0</code>, <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>inputAttachmentCount</code> valid <code>VkAttachmentReference</code> structures" 3360 }, 3361 { 3362 "vuid": "VUID-VkSubpassDescription-pColorAttachments-parameter", 3363 "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference</code> structures" 3364 }, 3365 { 3366 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-parameter", 3367 "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, and <code>pResolveAttachments</code> is not <code>NULL</code>, <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference</code> structures" 3368 }, 3369 { 3370 "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-parameter", 3371 "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAttachmentReference</code> structure" 3372 }, 3373 { 3374 "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-parameter", 3375 "text": " If <code>preserveAttachmentCount</code> is not <code>0</code>, <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>preserveAttachmentCount</code> <code>uint32_t</code> values" 3376 } 3377 ], 3378 "(VK_AMD_mixed_attachment_samples)": [ 3379 { 3380 "vuid": "VUID-VkSubpassDescription-pColorAttachments-01506", 3381 "text": " If the <code>VK_AMD_mixed_attachment_samples</code> extension is enabled, and all attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is smaller than or equal to the sample count of <code>pDepthStencilAttachment</code> if it is not <code>VK_ATTACHMENT_UNUSED</code>" 3382 } 3383 ], 3384 "(VK_NVX_multiview_per_view_attributes)": [ 3385 { 3386 "vuid": "VUID-VkSubpassDescription-flags-00856", 3387 "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX</code>, it <strong class=\"purple\">must</strong> also include <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX</code>." 3388 } 3389 ] 3390 }, 3391 "VkAttachmentReference": { 3392 "core": [ 3393 { 3394 "vuid": "VUID-VkAttachmentReference-layout-00857", 3395 "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>" 3396 }, 3397 { 3398 "vuid": "VUID-VkAttachmentReference-layout-parameter", 3399 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 3400 } 3401 ] 3402 }, 3403 "VkSubpassDependency": { 3404 "core": [ 3405 { 3406 "vuid": "VUID-VkSubpassDependency-srcSubpass-00858", 3407 "text": " If <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>" 3408 }, 3409 { 3410 "vuid": "VUID-VkSubpassDependency-dstSubpass-00859", 3411 "text": " If <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>" 3412 }, 3413 { 3414 "vuid": "VUID-VkSubpassDependency-srcStageMask-00860", 3415 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 3416 }, 3417 { 3418 "vuid": "VUID-VkSubpassDependency-dstStageMask-00861", 3419 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 3420 }, 3421 { 3422 "vuid": "VUID-VkSubpassDependency-srcStageMask-00862", 3423 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 3424 }, 3425 { 3426 "vuid": "VUID-VkSubpassDependency-dstStageMask-00863", 3427 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 3428 }, 3429 { 3430 "vuid": "VUID-VkSubpassDependency-srcSubpass-00864", 3431 "text": " <code>srcSubpass</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dstSubpass</code>, unless one of them is <code>VK_SUBPASS_EXTERNAL</code>, to avoid cyclic dependencies and ensure a valid execution order" 3432 }, 3433 { 3434 "vuid": "VUID-VkSubpassDependency-srcSubpass-00865", 3435 "text": " <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>" 3436 }, 3437 { 3438 "vuid": "VUID-VkSubpassDependency-srcSubpass-01989", 3439 "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code>, <code>srcStageMask</code> and <code>dstStageMask</code> <strong class=\"purple\">must</strong> not set any bits that are neither <code>VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT</code>, nor one of the <a href=\"#synchronization-pipeline-stages-types\">graphics pipeline stages</a>" 3440 }, 3441 { 3442 "vuid": "VUID-VkSubpassDependency-srcSubpass-00867", 3443 "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code> and not all of the stages in <code>srcStageMask</code> and <code>dstStageMask</code> are <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>, the <a href=\"#synchronization-pipeline-stages-order\">logically latest</a> pipeline stage in <code>srcStageMask</code> <strong class=\"purple\">must</strong> be <a href=\"#synchronization-pipeline-stages-order\">logically earlier</a> than or equal to the <a href=\"#synchronization-pipeline-stages-order\">logically earliest</a> pipeline stage in <code>dstStageMask</code>" 3444 }, 3445 { 3446 "vuid": "VUID-VkSubpassDependency-srcAccessMask-00868", 3447 "text": " Any access flag included in <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3448 }, 3449 { 3450 "vuid": "VUID-VkSubpassDependency-dstAccessMask-00869", 3451 "text": " Any access flag included in <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3452 }, 3453 { 3454 "vuid": "VUID-VkSubpassDependency-srcSubpass-02243", 3455 "text": " If <code>srcSubpass</code> equals <code>dstSubpass</code>, and <code>srcStageMask</code> and <code>dstStageMask</code> both include a <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stage</a>, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_BY_REGION_BIT</code>" 3456 }, 3457 { 3458 "vuid": "VUID-VkSubpassDependency-srcStageMask-parameter", 3459 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 3460 }, 3461 { 3462 "vuid": "VUID-VkSubpassDependency-srcStageMask-requiredbitmask", 3463 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 3464 }, 3465 { 3466 "vuid": "VUID-VkSubpassDependency-dstStageMask-parameter", 3467 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 3468 }, 3469 { 3470 "vuid": "VUID-VkSubpassDependency-dstStageMask-requiredbitmask", 3471 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 3472 }, 3473 { 3474 "vuid": "VUID-VkSubpassDependency-srcAccessMask-parameter", 3475 "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 3476 }, 3477 { 3478 "vuid": "VUID-VkSubpassDependency-dstAccessMask-parameter", 3479 "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 3480 }, 3481 { 3482 "vuid": "VUID-VkSubpassDependency-dependencyFlags-parameter", 3483 "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values" 3484 } 3485 ], 3486 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 3487 { 3488 "vuid": "VUID-VkSubpassDependency-dependencyFlags-02520", 3489 "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>" 3490 }, 3491 { 3492 "vuid": "VUID-VkSubpassDependency-dependencyFlags-02521", 3493 "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>dstSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>" 3494 }, 3495 { 3496 "vuid": "VUID-VkSubpassDependency-srcSubpass-00872", 3497 "text": " If <code>srcSubpass</code> equals <code>dstSubpass</code> and that subpass has more than one bit set in the view mask, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>" 3498 } 3499 ], 3500 "(VK_NV_mesh_shader)": [ 3501 { 3502 "vuid": "VUID-VkSubpassDependency-srcStageMask-02099", 3503 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 3504 }, 3505 { 3506 "vuid": "VUID-VkSubpassDependency-srcStageMask-02100", 3507 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 3508 }, 3509 { 3510 "vuid": "VUID-VkSubpassDependency-dstStageMask-02101", 3511 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 3512 }, 3513 { 3514 "vuid": "VUID-VkSubpassDependency-dstStageMask-02102", 3515 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 3516 } 3517 ] 3518 }, 3519 "vkCreateRenderPass2KHR": { 3520 "(VK_KHR_create_renderpass2)": [ 3521 { 3522 "vuid": "VUID-vkCreateRenderPass2KHR-device-parameter", 3523 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 3524 }, 3525 { 3526 "vuid": "VUID-vkCreateRenderPass2KHR-pCreateInfo-parameter", 3527 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassCreateInfo2KHR</code> structure" 3528 }, 3529 { 3530 "vuid": "VUID-vkCreateRenderPass2KHR-pAllocator-parameter", 3531 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 3532 }, 3533 { 3534 "vuid": "VUID-vkCreateRenderPass2KHR-pRenderPass-parameter", 3535 "text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkRenderPass</code> handle" 3536 } 3537 ] 3538 }, 3539 "VkRenderPassCreateInfo2KHR": { 3540 "(VK_KHR_create_renderpass2)": [ 3541 { 3542 "vuid": "VUID-VkRenderPassCreateInfo2KHR-None-03049", 3543 "text": " If any two subpasses operate on attachments with overlapping ranges of the same <code>VkDeviceMemory</code> object, and at least one subpass writes to that area of <code>VkDeviceMemory</code>, a subpass dependency <strong class=\"purple\">must</strong> be included (either directly or via some intermediate subpasses) between them" 3544 }, 3545 { 3546 "vuid": "VUID-VkRenderPassCreateInfo2KHR-attachment-03050", 3547 "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or the attachment indexed by any element of <code>pPreserveAttachments</code> in any given element of <code>pSubpasses</code> is bound to a range of a <code>VkDeviceMemory</code> object that overlaps with any other attachment in any subpass (including the same subpass), the <code>VkAttachmentDescription2KHR</code> structures describing them <strong class=\"purple\">must</strong> include <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> in <code>flags</code>" 3548 }, 3549 { 3550 "vuid": "VUID-VkRenderPassCreateInfo2KHR-attachment-03051", 3551 "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or any element of <code>pPreserveAttachments</code> in any given element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, it <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>" 3552 }, 3553 { 3554 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-02522", 3555 "text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>" 3556 }, 3557 { 3558 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-02523", 3559 "text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>." 3560 }, 3561 { 3562 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-03054", 3563 "text": " For any element of <code>pDependencies</code>, if the <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>srcStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass." 3564 }, 3565 { 3566 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-03055", 3567 "text": " For any element of <code>pDependencies</code>, if the <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>dstStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass." 3568 }, 3569 { 3570 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pCorrelatedViewMasks-03056", 3571 "text": " The set of bits included in any element of <code>pCorrelatedViewMasks</code> <strong class=\"purple\">must</strong> not overlap with the set of bits included in any other element of <code>pCorrelatedViewMasks</code>" 3572 }, 3573 { 3574 "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-03057", 3575 "text": " If the <a href=\"#VkSubpassDescription2KHR\">VkSubpassDescription2KHR</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> is <code>0</code>, <code>correlatedViewMaskCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 3576 }, 3577 { 3578 "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-03058", 3579 "text": " The <a href=\"#VkSubpassDescription2KHR\">VkSubpassDescription2KHR</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> <strong class=\"purple\">must</strong> either all be <code>0</code>, or all not be <code>0</code>" 3580 }, 3581 { 3582 "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-03059", 3583 "text": " If the <a href=\"#VkSubpassDescription2KHR\">VkSubpassDescription2KHR</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> is <code>0</code>, the <code>dependencyFlags</code> member of any element of <code>pDependencies</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>" 3584 }, 3585 { 3586 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-03060", 3587 "text": " For any element of <code>pDependencies</code> where its <code>srcSubpass</code> member equals its <code>dstSubpass</code> member, if the <code>viewMask</code> member of the corresponding element of <code>pSubpasses</code> includes more than one bit, its <code>dependencyFlags</code> member <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>" 3588 }, 3589 { 3590 "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-02524", 3591 "text": " The <code>viewMask</code> member <strong class=\"purple\">must</strong> not include a bit at a position greater than the value of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxFramebufferLayers</code>" 3592 }, 3593 { 3594 "vuid": "VUID-VkRenderPassCreateInfo2KHR-attachment-02525", 3595 "text": " If the <code>attachment</code> member of any element of the <code>pInputAttachments</code> member of any element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, the <code>aspectMask</code> member of that element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> only include aspects that are present in images of the format specified by the element of <code>pAttachments</code> specified by <code>attachment</code>" 3596 }, 3597 { 3598 "vuid": "VUID-VkRenderPassCreateInfo2KHR-srcSubpass-02526", 3599 "text": " The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>" 3600 }, 3601 { 3602 "vuid": "VUID-VkRenderPassCreateInfo2KHR-dstSubpass-02527", 3603 "text": " The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>" 3604 }, 3605 { 3606 "vuid": "VUID-VkRenderPassCreateInfo2KHR-sType-sType", 3607 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR</code>" 3608 }, 3609 { 3610 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pNext-pNext", 3611 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 3612 }, 3613 { 3614 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-parameter", 3615 "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkAttachmentDescription2KHR</code> structures" 3616 }, 3617 { 3618 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pSubpasses-parameter", 3619 "text": " <code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <code>VkSubpassDescription2KHR</code> structures" 3620 }, 3621 { 3622 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-parameter", 3623 "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pDependencies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> valid <code>VkSubpassDependency2KHR</code> structures" 3624 }, 3625 { 3626 "vuid": "VUID-VkRenderPassCreateInfo2KHR-pCorrelatedViewMasks-parameter", 3627 "text": " If <code>correlatedViewMaskCount</code> is not <code>0</code>, <code>pCorrelatedViewMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>correlatedViewMaskCount</code> <code>uint32_t</code> values" 3628 }, 3629 { 3630 "vuid": "VUID-VkRenderPassCreateInfo2KHR-subpassCount-arraylength", 3631 "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 3632 } 3633 ] 3634 }, 3635 "VkAttachmentDescription2KHR": { 3636 "(VK_KHR_create_renderpass2)": [ 3637 { 3638 "vuid": "VUID-VkAttachmentDescription2KHR-finalLayout-03061", 3639 "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>" 3640 }, 3641 { 3642 "vuid": "VUID-VkAttachmentDescription2KHR-sType-sType", 3643 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR</code>" 3644 }, 3645 { 3646 "vuid": "VUID-VkAttachmentDescription2KHR-flags-parameter", 3647 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values" 3648 }, 3649 { 3650 "vuid": "VUID-VkAttachmentDescription2KHR-format-parameter", 3651 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 3652 }, 3653 { 3654 "vuid": "VUID-VkAttachmentDescription2KHR-samples-parameter", 3655 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 3656 }, 3657 { 3658 "vuid": "VUID-VkAttachmentDescription2KHR-loadOp-parameter", 3659 "text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value" 3660 }, 3661 { 3662 "vuid": "VUID-VkAttachmentDescription2KHR-storeOp-parameter", 3663 "text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value" 3664 }, 3665 { 3666 "vuid": "VUID-VkAttachmentDescription2KHR-stencilLoadOp-parameter", 3667 "text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value" 3668 }, 3669 { 3670 "vuid": "VUID-VkAttachmentDescription2KHR-stencilStoreOp-parameter", 3671 "text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value" 3672 }, 3673 { 3674 "vuid": "VUID-VkAttachmentDescription2KHR-initialLayout-parameter", 3675 "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 3676 }, 3677 { 3678 "vuid": "VUID-VkAttachmentDescription2KHR-finalLayout-parameter", 3679 "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 3680 } 3681 ] 3682 }, 3683 "VkSubpassDescription2KHR": { 3684 "(VK_KHR_create_renderpass2)": [ 3685 { 3686 "vuid": "VUID-VkSubpassDescription2KHR-pipelineBindPoint-03062", 3687 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 3688 }, 3689 { 3690 "vuid": "VUID-VkSubpassDescription2KHR-colorAttachmentCount-03063", 3691 "text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>" 3692 }, 3693 { 3694 "vuid": "VUID-VkSubpassDescription2KHR-loadOp-03064", 3695 "text": " If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then <code>loadOp</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>" 3696 }, 3697 { 3698 "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03065", 3699 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that does not have the value <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have the value <code>VK_ATTACHMENT_UNUSED</code>" 3700 }, 3701 { 3702 "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03066", 3703 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>" 3704 }, 3705 { 3706 "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03067", 3707 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>" 3708 }, 3709 { 3710 "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03068", 3711 "text": " Any given element of <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkFormat\">VkFormat</a> as its corresponding color attachment" 3712 }, 3713 { 3714 "vuid": "VUID-VkSubpassDescription2KHR-pColorAttachments-03069", 3715 "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same sample count" 3716 }, 3717 { 3718 "vuid": "VUID-VkSubpassDescription2KHR-pDepthStencilAttachment-03071", 3719 "text": " If neither the <code>VK_AMD_mixed_attachment_samples</code> nor the <code>VK_NV_framebuffer_mixed_samples</code> extensions are enabled, and if <code>pDepthStencilAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code> and any attachments in <code>pColorAttachments</code> are not <code>VK_ATTACHMENT_UNUSED</code>, they <strong class=\"purple\">must</strong> have the same sample count" 3720 }, 3721 { 3722 "vuid": "VUID-VkSubpassDescription2KHR-attachment-03073", 3723 "text": " The <code>attachment</code> member of any element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>" 3724 }, 3725 { 3726 "vuid": "VUID-VkSubpassDescription2KHR-pPreserveAttachments-03074", 3727 "text": " Any given element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not also be an element of any other member of the subpass description" 3728 }, 3729 { 3730 "vuid": "VUID-VkSubpassDescription2KHR-layout-02528", 3731 "text": " If any attachment is used by more than one <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> member, then each use <strong class=\"purple\">must</strong> use the same <code>layout</code>" 3732 }, 3733 { 3734 "vuid": "VUID-VkSubpassDescription2KHR-aspectMask-03175", 3735 "text": " The <code>aspectMask</code> member of any element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a>" 3736 }, 3737 { 3738 "vuid": "VUID-VkSubpassDescription2KHR-aspectMask-03176", 3739 "text": " The <code>aspectMask</code> member of any element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 3740 }, 3741 { 3742 "vuid": "VUID-VkSubpassDescription2KHR-aspectMask-02529", 3743 "text": " The <code>aspectMask</code> member of each element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>" 3744 }, 3745 { 3746 "vuid": "VUID-VkSubpassDescription2KHR-sType-sType", 3747 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR</code>" 3748 }, 3749 { 3750 "vuid": "VUID-VkSubpassDescription2KHR-flags-parameter", 3751 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values" 3752 }, 3753 { 3754 "vuid": "VUID-VkSubpassDescription2KHR-pipelineBindPoint-parameter", 3755 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 3756 }, 3757 { 3758 "vuid": "VUID-VkSubpassDescription2KHR-pInputAttachments-parameter", 3759 "text": " If <code>inputAttachmentCount</code> is not <code>0</code>, <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>inputAttachmentCount</code> valid <code>VkAttachmentReference2KHR</code> structures" 3760 }, 3761 { 3762 "vuid": "VUID-VkSubpassDescription2KHR-pColorAttachments-parameter", 3763 "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference2KHR</code> structures" 3764 }, 3765 { 3766 "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-parameter", 3767 "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, and <code>pResolveAttachments</code> is not <code>NULL</code>, <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference2KHR</code> structures" 3768 }, 3769 { 3770 "vuid": "VUID-VkSubpassDescription2KHR-pDepthStencilAttachment-parameter", 3771 "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAttachmentReference2KHR</code> structure" 3772 }, 3773 { 3774 "vuid": "VUID-VkSubpassDescription2KHR-pPreserveAttachments-parameter", 3775 "text": " If <code>preserveAttachmentCount</code> is not <code>0</code>, <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>preserveAttachmentCount</code> <code>uint32_t</code> values" 3776 } 3777 ], 3778 "(VK_KHR_create_renderpass2)+(VK_AMD_mixed_attachment_samples)": [ 3779 { 3780 "vuid": "VUID-VkSubpassDescription2KHR-pColorAttachments-03070", 3781 "text": " If the <code>VK_AMD_mixed_attachment_samples</code> extension is enabled, all attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is smaller than or equal to the sample count of <code>pDepthStencilAttachment</code> if it is not <code>VK_ATTACHMENT_UNUSED</code>" 3782 } 3783 ], 3784 "(VK_KHR_create_renderpass2)+(VK_NVX_multiview_per_view_attributes)": [ 3785 { 3786 "vuid": "VUID-VkSubpassDescription2KHR-flags-03076", 3787 "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX</code>, it <strong class=\"purple\">must</strong> also include <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX</code>." 3788 } 3789 ] 3790 }, 3791 "VkSubpassDescriptionDepthStencilResolveKHR": { 3792 "(VK_KHR_create_renderpass2)+(VK_KHR_depth_stencil_resolve)": [ 3793 { 3794 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03177", 3795 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> not have the value <code>VK_ATTACHMENT_UNUSED</code>" 3796 }, 3797 { 3798 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03178", 3799 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> not both be <code>VK_RESOLVE_MODE_NONE_KHR</code>" 3800 }, 3801 { 3802 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03179", 3803 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>" 3804 }, 3805 { 3806 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03180", 3807 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>pDepthStencilResolveAttachment</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>" 3808 }, 3809 { 3810 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-02651", 3811 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code> then it <strong class=\"purple\">must</strong> have a format whose features contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 3812 }, 3813 { 3814 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03181", 3815 "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has a depth component, then the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> have a depth component with the same number of bits and numerical type" 3816 }, 3817 { 3818 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03182", 3819 "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has a stencil component, then the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> have a stencil component with the same number of bits and numerical type" 3820 }, 3821 { 3822 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-depthResolveMode-03183", 3823 "text": " The value of <code>depthResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>supportedDepthResolveModes</code> or <code>VK_RESOLVE_MODE_NONE_KHR</code>" 3824 }, 3825 { 3826 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-stencilResolveMode-03184", 3827 "text": " The value of <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>supportedStencilResolveModes</code> or <code>VK_RESOLVE_MODE_NONE_KHR</code>" 3828 }, 3829 { 3830 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03185", 3831 "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has both depth and stencil components, <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolve</code> is <code>VK_FALSE</code>, and <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolveNone</code> is <code>VK_FALSE</code>, then the values of <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be identical" 3832 }, 3833 { 3834 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03186", 3835 "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has both depth and stencil components, <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolve</code> is <code>VK_FALSE</code> and <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolveNone</code> is <code>VK_TRUE</code>, then the values of <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be identical or one of them <strong class=\"purple\">must</strong> be <code>VK_RESOLVE_MODE_NONE_KHR</code>" 3836 }, 3837 { 3838 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-sType-sType", 3839 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR</code>" 3840 }, 3841 { 3842 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-depthResolveMode-parameter", 3843 "text": " <code>depthResolveMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkResolveModeFlagBitsKHR\">VkResolveModeFlagBitsKHR</a> value" 3844 }, 3845 { 3846 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-stencilResolveMode-parameter", 3847 "text": " <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkResolveModeFlagBitsKHR\">VkResolveModeFlagBitsKHR</a> value" 3848 }, 3849 { 3850 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-parameter", 3851 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code>, <code>pDepthStencilResolveAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAttachmentReference2KHR</code> structure" 3852 } 3853 ] 3854 }, 3855 "VkAttachmentReference2KHR": { 3856 "(VK_KHR_create_renderpass2)": [ 3857 { 3858 "vuid": "VUID-VkAttachmentReference2KHR-layout-03077", 3859 "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>" 3860 }, 3861 { 3862 "vuid": "VUID-VkAttachmentReference2KHR-sType-sType", 3863 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR</code>" 3864 }, 3865 { 3866 "vuid": "VUID-VkAttachmentReference2KHR-layout-parameter", 3867 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 3868 } 3869 ] 3870 }, 3871 "VkSubpassDependency2KHR": { 3872 "(VK_KHR_create_renderpass2)": [ 3873 { 3874 "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03078", 3875 "text": " If <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>" 3876 }, 3877 { 3878 "vuid": "VUID-VkSubpassDependency2KHR-dstSubpass-03079", 3879 "text": " If <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>" 3880 }, 3881 { 3882 "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-03080", 3883 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 3884 }, 3885 { 3886 "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-03081", 3887 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 3888 }, 3889 { 3890 "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-03082", 3891 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 3892 }, 3893 { 3894 "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-03083", 3895 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 3896 }, 3897 { 3898 "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03084", 3899 "text": " <code>srcSubpass</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dstSubpass</code>, unless one of them is <code>VK_SUBPASS_EXTERNAL</code>, to avoid cyclic dependencies and ensure a valid execution order" 3900 }, 3901 { 3902 "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03085", 3903 "text": " <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>" 3904 }, 3905 { 3906 "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-02244", 3907 "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code>, <code>srcStageMask</code> and <code>dstStageMask</code> <strong class=\"purple\">must</strong> not set any bits that are neither <code>VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT</code>, nor one of the <a href=\"#synchronization-pipeline-stages-types\">graphics pipeline stages</a>" 3908 }, 3909 { 3910 "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03087", 3911 "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code> and not all of the stages in <code>srcStageMask</code> and <code>dstStageMask</code> are <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>, the <a href=\"#synchronization-pipeline-stages-order\">logically latest</a> pipeline stage in <code>srcStageMask</code> <strong class=\"purple\">must</strong> be <a href=\"#synchronization-pipeline-stages-order\">logically earlier</a> than or equal to the <a href=\"#synchronization-pipeline-stages-order\">logically earliest</a> pipeline stage in <code>dstStageMask</code>" 3912 }, 3913 { 3914 "vuid": "VUID-VkSubpassDependency2KHR-srcAccessMask-03088", 3915 "text": " Any access flag included in <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3916 }, 3917 { 3918 "vuid": "VUID-VkSubpassDependency2KHR-dstAccessMask-03089", 3919 "text": " Any access flag included in <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3920 }, 3921 { 3922 "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-03090", 3923 "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>" 3924 }, 3925 { 3926 "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-03091", 3927 "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>dstSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>" 3928 }, 3929 { 3930 "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-02245", 3931 "text": " If <code>srcSubpass</code> equals <code>dstSubpass</code>, and <code>srcStageMask</code> and <code>dstStageMask</code> both include a <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stage</a>, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_BY_REGION_BIT</code>" 3932 }, 3933 { 3934 "vuid": "VUID-VkSubpassDependency2KHR-viewOffset-02530", 3935 "text": " If <code>viewOffset</code> is not equal to <code>0</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>dstSubpass</code>" 3936 }, 3937 { 3938 "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-03092", 3939 "text": " If <code>dependencyFlags</code> does not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>viewOffset</code> <strong class=\"purple\">must</strong> be <code>0</code>" 3940 }, 3941 { 3942 "vuid": "VUID-VkSubpassDependency2KHR-viewOffset-03093", 3943 "text": " If <code>viewOffset</code> is not <code>0</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>dstSubpass</code>." 3944 }, 3945 { 3946 "vuid": "VUID-VkSubpassDependency2KHR-sType-sType", 3947 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR</code>" 3948 }, 3949 { 3950 "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-parameter", 3951 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 3952 }, 3953 { 3954 "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-requiredbitmask", 3955 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 3956 }, 3957 { 3958 "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-parameter", 3959 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 3960 }, 3961 { 3962 "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-requiredbitmask", 3963 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 3964 }, 3965 { 3966 "vuid": "VUID-VkSubpassDependency2KHR-srcAccessMask-parameter", 3967 "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 3968 }, 3969 { 3970 "vuid": "VUID-VkSubpassDependency2KHR-dstAccessMask-parameter", 3971 "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 3972 }, 3973 { 3974 "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-parameter", 3975 "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values" 3976 } 3977 ], 3978 "(VK_KHR_create_renderpass2)+(VK_NV_mesh_shader)": [ 3979 { 3980 "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-02103", 3981 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 3982 }, 3983 { 3984 "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-02104", 3985 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 3986 }, 3987 { 3988 "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-02105", 3989 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 3990 }, 3991 { 3992 "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-02106", 3993 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 3994 } 3995 ] 3996 }, 3997 "vkDestroyRenderPass": { 3998 "core": [ 3999 { 4000 "vuid": "VUID-vkDestroyRenderPass-renderPass-00873", 4001 "text": " All submitted commands that refer to <code>renderPass</code> <strong class=\"purple\">must</strong> have completed execution" 4002 }, 4003 { 4004 "vuid": "VUID-vkDestroyRenderPass-renderPass-00874", 4005 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>renderPass</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 4006 }, 4007 { 4008 "vuid": "VUID-vkDestroyRenderPass-renderPass-00875", 4009 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>renderPass</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 4010 }, 4011 { 4012 "vuid": "VUID-vkDestroyRenderPass-device-parameter", 4013 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 4014 }, 4015 { 4016 "vuid": "VUID-vkDestroyRenderPass-renderPass-parameter", 4017 "text": " If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle" 4018 }, 4019 { 4020 "vuid": "VUID-vkDestroyRenderPass-pAllocator-parameter", 4021 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 4022 }, 4023 { 4024 "vuid": "VUID-vkDestroyRenderPass-renderPass-parent", 4025 "text": " If <code>renderPass</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 4026 } 4027 ] 4028 }, 4029 "vkCreateFramebuffer": { 4030 "core": [ 4031 { 4032 "vuid": "VUID-vkCreateFramebuffer-device-parameter", 4033 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 4034 }, 4035 { 4036 "vuid": "VUID-vkCreateFramebuffer-pCreateInfo-parameter", 4037 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFramebufferCreateInfo</code> structure" 4038 }, 4039 { 4040 "vuid": "VUID-vkCreateFramebuffer-pAllocator-parameter", 4041 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 4042 }, 4043 { 4044 "vuid": "VUID-vkCreateFramebuffer-pFramebuffer-parameter", 4045 "text": " <code>pFramebuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFramebuffer</code> handle" 4046 } 4047 ] 4048 }, 4049 "VkFramebufferCreateInfo": { 4050 "core": [ 4051 { 4052 "vuid": "VUID-VkFramebufferCreateInfo-attachmentCount-00876", 4053 "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be equal to the attachment count specified in <code>renderPass</code>" 4054 }, 4055 { 4056 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00877", 4057 "text": " Each element of <code>pAttachments</code> that is used as a color attachment or resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>" 4058 }, 4059 { 4060 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02633", 4061 "text": " Each element of <code>pAttachments</code> that is used as a depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 4062 }, 4063 { 4064 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00879", 4065 "text": " Each element of <code>pAttachments</code> that is used as an input attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>" 4066 }, 4067 { 4068 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00880", 4069 "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with an <a href=\"#VkFormat\">VkFormat</a> value that matches the <a href=\"#VkFormat\">VkFormat</a> specified by the corresponding <code>VkAttachmentDescription</code> in <code>renderPass</code>" 4070 }, 4071 { 4072 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00881", 4073 "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value that matches the <code>samples</code> value specified by the corresponding <code>VkAttachmentDescription</code> in <code>renderPass</code>" 4074 }, 4075 { 4076 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00883", 4077 "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> only specify a single mip level" 4078 }, 4079 { 4080 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00884", 4081 "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle" 4082 }, 4083 { 4084 "vuid": "VUID-VkFramebufferCreateInfo-width-00885", 4085 "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>." 4086 }, 4087 { 4088 "vuid": "VUID-VkFramebufferCreateInfo-width-00886", 4089 "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>" 4090 }, 4091 { 4092 "vuid": "VUID-VkFramebufferCreateInfo-height-00887", 4093 "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>." 4094 }, 4095 { 4096 "vuid": "VUID-VkFramebufferCreateInfo-height-00888", 4097 "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>" 4098 }, 4099 { 4100 "vuid": "VUID-VkFramebufferCreateInfo-layers-00889", 4101 "text": " <code>layers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>." 4102 }, 4103 { 4104 "vuid": "VUID-VkFramebufferCreateInfo-layers-00890", 4105 "text": " <code>layers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferLayers</code>" 4106 }, 4107 { 4108 "vuid": "VUID-VkFramebufferCreateInfo-sType-sType", 4109 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO</code>" 4110 }, 4111 { 4112 "vuid": "VUID-VkFramebufferCreateInfo-pNext-pNext", 4113 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 4114 }, 4115 { 4116 "vuid": "VUID-VkFramebufferCreateInfo-flags-zerobitmask", 4117 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 4118 }, 4119 { 4120 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-parameter", 4121 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle" 4122 }, 4123 { 4124 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-parameter", 4125 "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkImageView</code> handles" 4126 }, 4127 { 4128 "vuid": "VUID-VkFramebufferCreateInfo-commonparent", 4129 "text": " Both of <code>renderPass</code>, and the elements of <code>pAttachments</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 4130 } 4131 ], 4132 "(VK_KHR_depth_stencil_resolve)": [ 4133 { 4134 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02634", 4135 "text": " Each element of <code>pAttachments</code> that is used as a depth/stencil resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 4136 } 4137 ], 4138 "(VK_EXT_fragment_density_map)": [ 4139 { 4140 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02552", 4141 "text": " Each element of <code>pAttachments</code> that is used as a fragment density map attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> not have been created with a <code>flags</code> value including <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>." 4142 }, 4143 { 4144 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02553", 4145 "text": " If <code>renderPass</code> has a fragment density map attachment and <a href=\"#features-nonsubsampledimages\">non-subsample image feature</a> is not enabled, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with a <code>flags</code> value including <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code> unless that element is the fragment density map attachment." 4146 }, 4147 { 4148 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02554", 4149 "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have dimensions at least as large as the corresponding framebuffer dimension except for any element that is referenced by <code>fragmentDensityMapAttachment</code>" 4150 }, 4151 { 4152 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02555", 4153 "text": " An element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a width at least as large as \\(\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\rceil\\)" 4154 }, 4155 { 4156 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02556", 4157 "text": " An element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a height at least as large as \\(\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\rceil\\)" 4158 } 4159 ], 4160 "!(VK_EXT_fragment_density_map)": [ 4161 { 4162 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00882", 4163 "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have dimensions at least as large as the corresponding framebuffer dimension" 4164 } 4165 ], 4166 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 4167 { 4168 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00891", 4169 "text": " Each element of <code>pAttachments</code> that is a 2D or 2D array image view taken from a 3D image <strong class=\"purple\">must</strong> not be a depth/stencil format" 4170 } 4171 ], 4172 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 4173 { 4174 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02531", 4175 "text": " If <code>renderPass</code> was specified with non-zero view masks, <code>layers</code> <strong class=\"purple\">must</strong> be greater than or equal to the greatest position of any bit included in any of those view masks" 4176 } 4177 ] 4178 }, 4179 "vkDestroyFramebuffer": { 4180 "core": [ 4181 { 4182 "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00892", 4183 "text": " All submitted commands that refer to <code>framebuffer</code> <strong class=\"purple\">must</strong> have completed execution" 4184 }, 4185 { 4186 "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00893", 4187 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>framebuffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 4188 }, 4189 { 4190 "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00894", 4191 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>framebuffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 4192 }, 4193 { 4194 "vuid": "VUID-vkDestroyFramebuffer-device-parameter", 4195 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 4196 }, 4197 { 4198 "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parameter", 4199 "text": " If <code>framebuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkFramebuffer</code> handle" 4200 }, 4201 { 4202 "vuid": "VUID-vkDestroyFramebuffer-pAllocator-parameter", 4203 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 4204 }, 4205 { 4206 "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parent", 4207 "text": " If <code>framebuffer</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 4208 } 4209 ] 4210 }, 4211 "vkCmdBeginRenderPass": { 4212 "core": [ 4213 { 4214 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00895", 4215 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>" 4216 }, 4217 { 4218 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00897", 4219 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>" 4220 }, 4221 { 4222 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00898", 4223 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code>" 4224 }, 4225 { 4226 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00899", 4227 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code>" 4228 }, 4229 { 4230 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00900", 4231 "text": " If any of the <code>initialLayout</code> members of the <code>VkAttachmentDescription</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is not <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, then each such <code>initialLayout</code> <strong class=\"purple\">must</strong> be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code>" 4232 }, 4233 { 4234 "vuid": "VUID-vkCmdBeginRenderPass-srcStageMask-00901", 4235 "text": " The <code>srcStageMask</code> and <code>dstStageMask</code> members of any element of the <code>pDependencies</code> member of <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> used to create <code>renderPass</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family identified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> used to create the command pool which <code>commandBuffer</code> was allocated from" 4236 }, 4237 { 4238 "vuid": "VUID-vkCmdBeginRenderPass-framebuffer-02532", 4239 "text": " For any attachment in <code>framebuffer</code> that is used by <code>renderPass</code> and is bound to memory locations that are also bound to another attachment used by <code>renderPass</code>, and if at least one of those uses causes either attachment to be written to, both attachments <strong class=\"purple\">must</strong> have had the <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> set" 4240 }, 4241 { 4242 "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-parameter", 4243 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 4244 }, 4245 { 4246 "vuid": "VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter", 4247 "text": " <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassBeginInfo</code> structure" 4248 }, 4249 { 4250 "vuid": "VUID-vkCmdBeginRenderPass-contents-parameter", 4251 "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value" 4252 }, 4253 { 4254 "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-recording", 4255 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 4256 }, 4257 { 4258 "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-cmdpool", 4259 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 4260 }, 4261 { 4262 "vuid": "VUID-vkCmdBeginRenderPass-renderpass", 4263 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 4264 }, 4265 { 4266 "vuid": "VUID-vkCmdBeginRenderPass-bufferlevel", 4267 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>" 4268 } 4269 ], 4270 "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 4271 { 4272 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00896", 4273 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 4274 } 4275 ], 4276 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 4277 { 4278 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-01758", 4279 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 4280 } 4281 ] 4282 }, 4283 "vkCmdBeginRenderPass2KHR": { 4284 "(VK_KHR_create_renderpass2)": [ 4285 { 4286 "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03094", 4287 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>" 4288 }, 4289 { 4290 "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03096", 4291 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 4292 }, 4293 { 4294 "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03097", 4295 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>" 4296 }, 4297 { 4298 "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03098", 4299 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code>" 4300 }, 4301 { 4302 "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03099", 4303 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code>" 4304 }, 4305 { 4306 "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03100", 4307 "text": " If any of the <code>initialLayout</code> members of the <code>VkAttachmentDescription</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is not <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, then each such <code>initialLayout</code> <strong class=\"purple\">must</strong> be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code>" 4308 }, 4309 { 4310 "vuid": "VUID-vkCmdBeginRenderPass2KHR-srcStageMask-03101", 4311 "text": " The <code>srcStageMask</code> and <code>dstStageMask</code> members of any element of the <code>pDependencies</code> member of <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> used to create <code>renderPass</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family identified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> used to create the command pool which <code>commandBuffer</code> was allocated from" 4312 }, 4313 { 4314 "vuid": "VUID-vkCmdBeginRenderPass2KHR-framebuffer-02533", 4315 "text": " For any attachment in <code>framebuffer</code> that is used by <code>renderPass</code> and is bound to memory locations that are also bound to another attachment used by <code>renderPass</code>, and if at least one of those uses causes either attachment to be written to, both attachments <strong class=\"purple\">must</strong> have had the <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> set" 4316 }, 4317 { 4318 "vuid": "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-parameter", 4319 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 4320 }, 4321 { 4322 "vuid": "VUID-vkCmdBeginRenderPass2KHR-pRenderPassBegin-parameter", 4323 "text": " <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassBeginInfo</code> structure" 4324 }, 4325 { 4326 "vuid": "VUID-vkCmdBeginRenderPass2KHR-pSubpassBeginInfo-parameter", 4327 "text": " <code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassBeginInfoKHR</code> structure" 4328 }, 4329 { 4330 "vuid": "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-recording", 4331 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 4332 }, 4333 { 4334 "vuid": "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-cmdpool", 4335 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 4336 }, 4337 { 4338 "vuid": "VUID-vkCmdBeginRenderPass2KHR-renderpass", 4339 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 4340 }, 4341 { 4342 "vuid": "VUID-vkCmdBeginRenderPass2KHR-bufferlevel", 4343 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>" 4344 } 4345 ] 4346 }, 4347 "VkRenderPassBeginInfo": { 4348 "core": [ 4349 { 4350 "vuid": "VUID-VkRenderPassBeginInfo-clearValueCount-00902", 4351 "text": " <code>clearValueCount</code> <strong class=\"purple\">must</strong> be greater than the largest attachment index in <code>renderPass</code> that specifies a <code>loadOp</code> (or <code>stencilLoadOp</code>, if the attachment has a depth/stencil format) of <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>" 4352 }, 4353 { 4354 "vuid": "VUID-VkRenderPassBeginInfo-renderPass-00904", 4355 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkFramebufferCreateInfo</code> structure specified when creating <code>framebuffer</code>." 4356 }, 4357 { 4358 "vuid": "VUID-VkRenderPassBeginInfo-sType-sType", 4359 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO</code>" 4360 }, 4361 { 4362 "vuid": "VUID-VkRenderPassBeginInfo-pNext-pNext", 4363 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a>" 4364 }, 4365 { 4366 "vuid": "VUID-VkRenderPassBeginInfo-sType-unique", 4367 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 4368 }, 4369 { 4370 "vuid": "VUID-VkRenderPassBeginInfo-renderPass-parameter", 4371 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle" 4372 }, 4373 { 4374 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-parameter", 4375 "text": " <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkFramebuffer</code> handle" 4376 }, 4377 { 4378 "vuid": "VUID-VkRenderPassBeginInfo-pClearValues-parameter", 4379 "text": " If <code>clearValueCount</code> is not <code>0</code>, <code>pClearValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>clearValueCount</code> <code>VkClearValue</code> unions" 4380 }, 4381 { 4382 "vuid": "VUID-VkRenderPassBeginInfo-commonparent", 4383 "text": " Both of <code>framebuffer</code>, and <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 4384 } 4385 ] 4386 }, 4387 "VkRenderPassSampleLocationsBeginInfoEXT": { 4388 "(VK_EXT_sample_locations)": [ 4389 { 4390 "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-sType-sType", 4391 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT</code>" 4392 }, 4393 { 4394 "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pAttachmentInitialSampleLocations-parameter", 4395 "text": " If <code>attachmentInitialSampleLocationsCount</code> is not <code>0</code>, <code>pAttachmentInitialSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentInitialSampleLocationsCount</code> valid <code>VkAttachmentSampleLocationsEXT</code> structures" 4396 }, 4397 { 4398 "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pPostSubpassSampleLocations-parameter", 4399 "text": " If <code>postSubpassSampleLocationsCount</code> is not <code>0</code>, <code>pPostSubpassSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>postSubpassSampleLocationsCount</code> valid <code>VkSubpassSampleLocationsEXT</code> structures" 4400 } 4401 ] 4402 }, 4403 "VkAttachmentSampleLocationsEXT": { 4404 "(VK_EXT_sample_locations)": [ 4405 { 4406 "vuid": "VUID-VkAttachmentSampleLocationsEXT-attachmentIndex-01531", 4407 "text": " <code>attachmentIndex</code> <strong class=\"purple\">must</strong> be less than the <code>attachmentCount</code> specified in <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> the render pass specified by <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>::<code>renderPass</code> was created with" 4408 }, 4409 { 4410 "vuid": "VUID-VkAttachmentSampleLocationsEXT-sampleLocationsInfo-parameter", 4411 "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampleLocationsInfoEXT</code> structure" 4412 } 4413 ] 4414 }, 4415 "VkSubpassSampleLocationsEXT": { 4416 "(VK_EXT_sample_locations)": [ 4417 { 4418 "vuid": "VUID-VkSubpassSampleLocationsEXT-subpassIndex-01532", 4419 "text": " <code>subpassIndex</code> <strong class=\"purple\">must</strong> be less than the <code>subpassCount</code> specified in <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> the render pass specified by <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>::<code>renderPass</code> was created with" 4420 }, 4421 { 4422 "vuid": "VUID-VkSubpassSampleLocationsEXT-sampleLocationsInfo-parameter", 4423 "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampleLocationsInfoEXT</code> structure" 4424 } 4425 ] 4426 }, 4427 "VkSubpassBeginInfoKHR": { 4428 "(VK_KHR_create_renderpass2)": [ 4429 { 4430 "vuid": "VUID-VkSubpassBeginInfoKHR-sType-sType", 4431 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR</code>" 4432 }, 4433 { 4434 "vuid": "VUID-VkSubpassBeginInfoKHR-pNext-pNext", 4435 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 4436 }, 4437 { 4438 "vuid": "VUID-VkSubpassBeginInfoKHR-contents-parameter", 4439 "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value" 4440 } 4441 ] 4442 }, 4443 "VkDeviceGroupRenderPassBeginInfo": { 4444 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 4445 { 4446 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00905", 4447 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value" 4448 }, 4449 { 4450 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00906", 4451 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero" 4452 }, 4453 { 4454 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00907", 4455 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a subset of the command buffer’s initial device mask" 4456 }, 4457 { 4458 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceRenderAreaCount-00908", 4459 "text": " <code>deviceRenderAreaCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device." 4460 }, 4461 { 4462 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-sType-sType", 4463 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO</code>" 4464 }, 4465 { 4466 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-pDeviceRenderAreas-parameter", 4467 "text": " If <code>deviceRenderAreaCount</code> is not <code>0</code>, <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceRenderAreaCount</code> <code>VkRect2D</code> structures" 4468 } 4469 ] 4470 }, 4471 "vkGetRenderAreaGranularity": { 4472 "core": [ 4473 { 4474 "vuid": "VUID-vkGetRenderAreaGranularity-device-parameter", 4475 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 4476 }, 4477 { 4478 "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parameter", 4479 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle" 4480 }, 4481 { 4482 "vuid": "VUID-vkGetRenderAreaGranularity-pGranularity-parameter", 4483 "text": " <code>pGranularity</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExtent2D</code> structure" 4484 }, 4485 { 4486 "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parent", 4487 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 4488 } 4489 ] 4490 }, 4491 "vkCmdNextSubpass": { 4492 "core": [ 4493 { 4494 "vuid": "VUID-vkCmdNextSubpass-None-00909", 4495 "text": " The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one" 4496 }, 4497 { 4498 "vuid": "VUID-vkCmdNextSubpass-commandBuffer-parameter", 4499 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 4500 }, 4501 { 4502 "vuid": "VUID-vkCmdNextSubpass-contents-parameter", 4503 "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value" 4504 }, 4505 { 4506 "vuid": "VUID-vkCmdNextSubpass-commandBuffer-recording", 4507 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 4508 }, 4509 { 4510 "vuid": "VUID-vkCmdNextSubpass-commandBuffer-cmdpool", 4511 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 4512 }, 4513 { 4514 "vuid": "VUID-vkCmdNextSubpass-renderpass", 4515 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 4516 }, 4517 { 4518 "vuid": "VUID-vkCmdNextSubpass-bufferlevel", 4519 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>" 4520 } 4521 ], 4522 "(VK_EXT_transform_feedback)": [ 4523 { 4524 "vuid": "VUID-vkCmdNextSubpass-None-02349", 4525 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active" 4526 } 4527 ] 4528 }, 4529 "vkCmdNextSubpass2KHR": { 4530 "(VK_KHR_create_renderpass2)": [ 4531 { 4532 "vuid": "VUID-vkCmdNextSubpass2KHR-None-03102", 4533 "text": " The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one" 4534 }, 4535 { 4536 "vuid": "VUID-vkCmdNextSubpass2KHR-commandBuffer-parameter", 4537 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 4538 }, 4539 { 4540 "vuid": "VUID-vkCmdNextSubpass2KHR-pSubpassBeginInfo-parameter", 4541 "text": " <code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassBeginInfoKHR</code> structure" 4542 }, 4543 { 4544 "vuid": "VUID-vkCmdNextSubpass2KHR-pSubpassEndInfo-parameter", 4545 "text": " <code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassEndInfoKHR</code> structure" 4546 }, 4547 { 4548 "vuid": "VUID-vkCmdNextSubpass2KHR-commandBuffer-recording", 4549 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 4550 }, 4551 { 4552 "vuid": "VUID-vkCmdNextSubpass2KHR-commandBuffer-cmdpool", 4553 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 4554 }, 4555 { 4556 "vuid": "VUID-vkCmdNextSubpass2KHR-renderpass", 4557 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 4558 }, 4559 { 4560 "vuid": "VUID-vkCmdNextSubpass2KHR-bufferlevel", 4561 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>" 4562 } 4563 ], 4564 "(VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [ 4565 { 4566 "vuid": "VUID-vkCmdNextSubpass2KHR-None-02350", 4567 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active" 4568 } 4569 ] 4570 }, 4571 "vkCmdEndRenderPass": { 4572 "core": [ 4573 { 4574 "vuid": "VUID-vkCmdEndRenderPass-None-00910", 4575 "text": " The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one" 4576 }, 4577 { 4578 "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-parameter", 4579 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 4580 }, 4581 { 4582 "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-recording", 4583 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 4584 }, 4585 { 4586 "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-cmdpool", 4587 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 4588 }, 4589 { 4590 "vuid": "VUID-vkCmdEndRenderPass-renderpass", 4591 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 4592 }, 4593 { 4594 "vuid": "VUID-vkCmdEndRenderPass-bufferlevel", 4595 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>" 4596 } 4597 ], 4598 "(VK_EXT_transform_feedback)": [ 4599 { 4600 "vuid": "VUID-vkCmdEndRenderPass-None-02351", 4601 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active" 4602 } 4603 ] 4604 }, 4605 "vkCmdEndRenderPass2KHR": { 4606 "(VK_KHR_create_renderpass2)": [ 4607 { 4608 "vuid": "VUID-vkCmdEndRenderPass2KHR-None-03103", 4609 "text": " The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one" 4610 }, 4611 { 4612 "vuid": "VUID-vkCmdEndRenderPass2KHR-commandBuffer-parameter", 4613 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 4614 }, 4615 { 4616 "vuid": "VUID-vkCmdEndRenderPass2KHR-pSubpassEndInfo-parameter", 4617 "text": " <code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassEndInfoKHR</code> structure" 4618 }, 4619 { 4620 "vuid": "VUID-vkCmdEndRenderPass2KHR-commandBuffer-recording", 4621 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 4622 }, 4623 { 4624 "vuid": "VUID-vkCmdEndRenderPass2KHR-commandBuffer-cmdpool", 4625 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 4626 }, 4627 { 4628 "vuid": "VUID-vkCmdEndRenderPass2KHR-renderpass", 4629 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 4630 }, 4631 { 4632 "vuid": "VUID-vkCmdEndRenderPass2KHR-bufferlevel", 4633 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>" 4634 } 4635 ], 4636 "(VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [ 4637 { 4638 "vuid": "VUID-vkCmdEndRenderPass2KHR-None-02352", 4639 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active" 4640 } 4641 ] 4642 }, 4643 "VkSubpassEndInfoKHR": { 4644 "(VK_KHR_create_renderpass2)": [ 4645 { 4646 "vuid": "VUID-VkSubpassEndInfoKHR-sType-sType", 4647 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR</code>" 4648 }, 4649 { 4650 "vuid": "VUID-VkSubpassEndInfoKHR-pNext-pNext", 4651 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 4652 } 4653 ] 4654 }, 4655 "vkCreateShaderModule": { 4656 "core": [ 4657 { 4658 "vuid": "VUID-vkCreateShaderModule-device-parameter", 4659 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 4660 }, 4661 { 4662 "vuid": "VUID-vkCreateShaderModule-pCreateInfo-parameter", 4663 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkShaderModuleCreateInfo</code> structure" 4664 }, 4665 { 4666 "vuid": "VUID-vkCreateShaderModule-pAllocator-parameter", 4667 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 4668 }, 4669 { 4670 "vuid": "VUID-vkCreateShaderModule-pShaderModule-parameter", 4671 "text": " <code>pShaderModule</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkShaderModule</code> handle" 4672 } 4673 ] 4674 }, 4675 "VkShaderModuleCreateInfo": { 4676 "core": [ 4677 { 4678 "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01085", 4679 "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be greater than 0" 4680 }, 4681 { 4682 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01089", 4683 "text": " <code>pCode</code> <strong class=\"purple\">must</strong> declare the <code>Shader</code> capability for SPIR-V code" 4684 }, 4685 { 4686 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01090", 4687 "text": " <code>pCode</code> <strong class=\"purple\">must</strong> not declare any capability that is not supported by the API, as described by the <a href=\"#spirvenv-module-validation\">Capabilities</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix" 4688 }, 4689 { 4690 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01091", 4691 "text": " If <code>pCode</code> declares any of the capabilities listed as <strong class=\"purple\">optional</strong> in the <a href=\"#spirvenv-capabilities-table\">SPIR-V Environment</a> appendix, the corresponding feature(s) <strong class=\"purple\">must</strong> be enabled." 4692 }, 4693 { 4694 "vuid": "VUID-VkShaderModuleCreateInfo-sType-sType", 4695 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO</code>" 4696 }, 4697 { 4698 "vuid": "VUID-VkShaderModuleCreateInfo-pNext-pNext", 4699 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkShaderModuleValidationCacheCreateInfoEXT\">VkShaderModuleValidationCacheCreateInfoEXT</a>" 4700 }, 4701 { 4702 "vuid": "VUID-VkShaderModuleCreateInfo-flags-zerobitmask", 4703 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 4704 }, 4705 { 4706 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-parameter", 4707 "text": " <code>pCode</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of \\(\\textrm{codeSize} \\over 4\\) <code>uint32_t</code> values" 4708 } 4709 ], 4710 "!(VK_NV_glsl_shader)": [ 4711 { 4712 "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01086", 4713 "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4" 4714 }, 4715 { 4716 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01087", 4717 "text": " <code>pCode</code> <strong class=\"purple\">must</strong> point to valid SPIR-V code, formatted and packed as described by the <a href=\"#spirv-spec\">Khronos SPIR-V Specification</a>" 4718 }, 4719 { 4720 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01088", 4721 "text": " <code>pCode</code> <strong class=\"purple\">must</strong> adhere to the validation rules described by the <a href=\"#spirvenv-module-validation\">Validation Rules within a Module</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix" 4722 } 4723 ], 4724 "(VK_NV_glsl_shader)": [ 4725 { 4726 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01376", 4727 "text": " If <code>pCode</code> points to SPIR-V code, <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4" 4728 }, 4729 { 4730 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01377", 4731 "text": " <code>pCode</code> <strong class=\"purple\">must</strong> point to either valid SPIR-V code, formatted and packed as described by the <a href=\"#spirv-spec\">Khronos SPIR-V Specification</a> or valid GLSL code which <strong class=\"purple\">must</strong> be written to the <code>GL_KHR_vulkan_glsl</code> extension specification" 4732 }, 4733 { 4734 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01378", 4735 "text": " If <code>pCode</code> points to SPIR-V code, that code <strong class=\"purple\">must</strong> adhere to the validation rules described by the <a href=\"#spirvenv-module-validation\">Validation Rules within a Module</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix" 4736 }, 4737 { 4738 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01379", 4739 "text": " If <code>pCode</code> points to GLSL code, it <strong class=\"purple\">must</strong> be valid GLSL code written to the <code>GL_KHR_vulkan_glsl</code> GLSL extension specification" 4740 } 4741 ] 4742 }, 4743 "VkShaderModuleValidationCacheCreateInfoEXT": { 4744 "(VK_EXT_validation_cache)": [ 4745 { 4746 "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-sType-sType", 4747 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT</code>" 4748 }, 4749 { 4750 "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-validationCache-parameter", 4751 "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle" 4752 } 4753 ] 4754 }, 4755 "vkDestroyShaderModule": { 4756 "core": [ 4757 { 4758 "vuid": "VUID-vkDestroyShaderModule-shaderModule-01092", 4759 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>shaderModule</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 4760 }, 4761 { 4762 "vuid": "VUID-vkDestroyShaderModule-shaderModule-01093", 4763 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>shaderModule</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 4764 }, 4765 { 4766 "vuid": "VUID-vkDestroyShaderModule-device-parameter", 4767 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 4768 }, 4769 { 4770 "vuid": "VUID-vkDestroyShaderModule-shaderModule-parameter", 4771 "text": " If <code>shaderModule</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>shaderModule</code> <strong class=\"purple\">must</strong> be a valid <code>VkShaderModule</code> handle" 4772 }, 4773 { 4774 "vuid": "VUID-vkDestroyShaderModule-pAllocator-parameter", 4775 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 4776 }, 4777 { 4778 "vuid": "VUID-vkDestroyShaderModule-shaderModule-parent", 4779 "text": " If <code>shaderModule</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 4780 } 4781 ] 4782 }, 4783 "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV": { 4784 "(VK_NV_cooperative_matrix)": [ 4785 { 4786 "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter", 4787 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 4788 }, 4789 { 4790 "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pPropertyCount-parameter", 4791 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 4792 }, 4793 { 4794 "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pProperties-parameter", 4795 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkCooperativeMatrixPropertiesNV</code> structures" 4796 } 4797 ] 4798 }, 4799 "VkCooperativeMatrixPropertiesNV": { 4800 "(VK_NV_cooperative_matrix)": [ 4801 { 4802 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-sType-sType", 4803 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>" 4804 }, 4805 { 4806 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-pNext-pNext", 4807 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 4808 }, 4809 { 4810 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-AType-parameter", 4811 "text": " <code>AType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value" 4812 }, 4813 { 4814 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-BType-parameter", 4815 "text": " <code>BType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value" 4816 }, 4817 { 4818 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-CType-parameter", 4819 "text": " <code>CType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value" 4820 }, 4821 { 4822 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-DType-parameter", 4823 "text": " <code>DType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value" 4824 }, 4825 { 4826 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-scope-parameter", 4827 "text": " <code>scope</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkScopeNV\">VkScopeNV</a> value" 4828 } 4829 ] 4830 }, 4831 "vkCreateValidationCacheEXT": { 4832 "(VK_EXT_validation_cache)": [ 4833 { 4834 "vuid": "VUID-vkCreateValidationCacheEXT-device-parameter", 4835 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 4836 }, 4837 { 4838 "vuid": "VUID-vkCreateValidationCacheEXT-pCreateInfo-parameter", 4839 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkValidationCacheCreateInfoEXT</code> structure" 4840 }, 4841 { 4842 "vuid": "VUID-vkCreateValidationCacheEXT-pAllocator-parameter", 4843 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 4844 }, 4845 { 4846 "vuid": "VUID-vkCreateValidationCacheEXT-pValidationCache-parameter", 4847 "text": " <code>pValidationCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkValidationCacheEXT</code> handle" 4848 } 4849 ] 4850 }, 4851 "VkValidationCacheCreateInfoEXT": { 4852 "(VK_EXT_validation_cache)": [ 4853 { 4854 "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01534", 4855 "text": " If <code>initialDataSize</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to the size of <code>pInitialData</code>, as returned by <code>vkGetValidationCacheDataEXT</code> when <code>pInitialData</code> was originally retrieved" 4856 }, 4857 { 4858 "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01535", 4859 "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> have been retrieved from a previous call to <code>vkGetValidationCacheDataEXT</code>" 4860 }, 4861 { 4862 "vuid": "VUID-VkValidationCacheCreateInfoEXT-sType-sType", 4863 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT</code>" 4864 }, 4865 { 4866 "vuid": "VUID-VkValidationCacheCreateInfoEXT-pNext-pNext", 4867 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 4868 }, 4869 { 4870 "vuid": "VUID-VkValidationCacheCreateInfoEXT-flags-zerobitmask", 4871 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 4872 }, 4873 { 4874 "vuid": "VUID-VkValidationCacheCreateInfoEXT-pInitialData-parameter", 4875 "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>initialDataSize</code> bytes" 4876 } 4877 ] 4878 }, 4879 "vkMergeValidationCachesEXT": { 4880 "(VK_EXT_validation_cache)": [ 4881 { 4882 "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-01536", 4883 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches" 4884 }, 4885 { 4886 "vuid": "VUID-vkMergeValidationCachesEXT-device-parameter", 4887 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 4888 }, 4889 { 4890 "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parameter", 4891 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle" 4892 }, 4893 { 4894 "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parameter", 4895 "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <code>VkValidationCacheEXT</code> handles" 4896 }, 4897 { 4898 "vuid": "VUID-vkMergeValidationCachesEXT-srcCacheCount-arraylength", 4899 "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 4900 }, 4901 { 4902 "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parent", 4903 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 4904 }, 4905 { 4906 "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parent", 4907 "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 4908 } 4909 ] 4910 }, 4911 "vkGetValidationCacheDataEXT": { 4912 "(VK_EXT_validation_cache)": [ 4913 { 4914 "vuid": "VUID-vkGetValidationCacheDataEXT-device-parameter", 4915 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 4916 }, 4917 { 4918 "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parameter", 4919 "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle" 4920 }, 4921 { 4922 "vuid": "VUID-vkGetValidationCacheDataEXT-pDataSize-parameter", 4923 "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value" 4924 }, 4925 { 4926 "vuid": "VUID-vkGetValidationCacheDataEXT-pData-parameter", 4927 "text": " If the value referenced by <code>pDataSize</code> is not <code>0</code>, and <code>pData</code> is not <code>NULL</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDataSize</code> bytes" 4928 }, 4929 { 4930 "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parent", 4931 "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 4932 } 4933 ] 4934 }, 4935 "vkDestroyValidationCacheEXT": { 4936 "(VK_EXT_validation_cache)": [ 4937 { 4938 "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01537", 4939 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>validationCache</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 4940 }, 4941 { 4942 "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01538", 4943 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>validationCache</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 4944 }, 4945 { 4946 "vuid": "VUID-vkDestroyValidationCacheEXT-device-parameter", 4947 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 4948 }, 4949 { 4950 "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parameter", 4951 "text": " If <code>validationCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle" 4952 }, 4953 { 4954 "vuid": "VUID-vkDestroyValidationCacheEXT-pAllocator-parameter", 4955 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 4956 }, 4957 { 4958 "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parent", 4959 "text": " If <code>validationCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 4960 } 4961 ] 4962 }, 4963 "vkCreateComputePipelines": { 4964 "core": [ 4965 { 4966 "vuid": "VUID-vkCreateComputePipelines-flags-00695", 4967 "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element" 4968 }, 4969 { 4970 "vuid": "VUID-vkCreateComputePipelines-flags-00696", 4971 "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set" 4972 }, 4973 { 4974 "vuid": "VUID-vkCreateComputePipelines-device-parameter", 4975 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 4976 }, 4977 { 4978 "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parameter", 4979 "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle" 4980 }, 4981 { 4982 "vuid": "VUID-vkCreateComputePipelines-pCreateInfos-parameter", 4983 "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <code>VkComputePipelineCreateInfo</code> structures" 4984 }, 4985 { 4986 "vuid": "VUID-vkCreateComputePipelines-pAllocator-parameter", 4987 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 4988 }, 4989 { 4990 "vuid": "VUID-vkCreateComputePipelines-pPipelines-parameter", 4991 "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <code>VkPipeline</code> handles" 4992 }, 4993 { 4994 "vuid": "VUID-vkCreateComputePipelines-createInfoCount-arraylength", 4995 "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 4996 }, 4997 { 4998 "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parent", 4999 "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 5000 } 5001 ] 5002 }, 5003 "VkComputePipelineCreateInfo": { 5004 "core": [ 5005 { 5006 "vuid": "VUID-VkComputePipelineCreateInfo-flags-00697", 5007 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a compute <code>VkPipeline</code>" 5008 }, 5009 { 5010 "vuid": "VUID-VkComputePipelineCreateInfo-flags-00698", 5011 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command’s <code>pCreateInfos</code> parameter" 5012 }, 5013 { 5014 "vuid": "VUID-VkComputePipelineCreateInfo-flags-00699", 5015 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 5016 }, 5017 { 5018 "vuid": "VUID-VkComputePipelineCreateInfo-flags-00700", 5019 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1" 5020 }, 5021 { 5022 "vuid": "VUID-VkComputePipelineCreateInfo-stage-00701", 5023 "text": " The <code>stage</code> member of <code>stage</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>" 5024 }, 5025 { 5026 "vuid": "VUID-VkComputePipelineCreateInfo-stage-00702", 5027 "text": " The shader code for the entry point identified by <code>stage</code> and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter" 5028 }, 5029 { 5030 "vuid": "VUID-VkComputePipelineCreateInfo-layout-00703", 5031 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with the layout of the compute shader specified in <code>stage</code>" 5032 }, 5033 { 5034 "vuid": "VUID-VkComputePipelineCreateInfo-layout-01687", 5035 "text": " The number of resources in <code>layout</code> accessible to the compute shader stage <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageResources</code>" 5036 }, 5037 { 5038 "vuid": "VUID-VkComputePipelineCreateInfo-sType-sType", 5039 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO</code>" 5040 }, 5041 { 5042 "vuid": "VUID-VkComputePipelineCreateInfo-pNext-pNext", 5043 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 5044 }, 5045 { 5046 "vuid": "VUID-VkComputePipelineCreateInfo-flags-parameter", 5047 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values" 5048 }, 5049 { 5050 "vuid": "VUID-VkComputePipelineCreateInfo-stage-parameter", 5051 "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineShaderStageCreateInfo</code> structure" 5052 }, 5053 { 5054 "vuid": "VUID-VkComputePipelineCreateInfo-layout-parameter", 5055 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle" 5056 }, 5057 { 5058 "vuid": "VUID-VkComputePipelineCreateInfo-commonparent", 5059 "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 5060 } 5061 ] 5062 }, 5063 "VkPipelineShaderStageCreateInfo": { 5064 "core": [ 5065 { 5066 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00704", 5067 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>" 5068 }, 5069 { 5070 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00705", 5071 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> or <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>" 5072 }, 5073 { 5074 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00706", 5075 "text": " <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_ALL_GRAPHICS</code>, or <code>VK_SHADER_STAGE_ALL</code>" 5076 }, 5077 { 5078 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-00707", 5079 "text": " <code>pName</code> <strong class=\"purple\">must</strong> be the name of an <code>OpEntryPoint</code> in <code>module</code> with an execution model that matches <code>stage</code>" 5080 }, 5081 { 5082 "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708", 5083 "text": " If the identified entry point includes any variable in its interface that is declared with the <code>ClipDistance</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxClipDistances</code>" 5084 }, 5085 { 5086 "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709", 5087 "text": " If the identified entry point includes any variable in its interface that is declared with the <code>CullDistance</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxCullDistances</code>" 5088 }, 5089 { 5090 "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710", 5091 "text": " If the identified entry point includes any variables in its interface that are declared with the <code>ClipDistance</code> or <code>CullDistance</code> <code>BuiltIn</code> decoration, those variables <strong class=\"purple\">must</strong> not have array sizes which sum to more than <code>VkPhysicalDeviceLimits</code>::<code>maxCombinedClipAndCullDistances</code>" 5092 }, 5093 { 5094 "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711", 5095 "text": " If the identified entry point includes any variable in its interface that is declared with the <code>SampleMask</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxSampleMaskWords</code>" 5096 }, 5097 { 5098 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00712", 5099 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_VERTEX_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> not include any input variable in its interface that is decorated with <code>CullDistance</code>" 5100 }, 5101 { 5102 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00713", 5103 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> or <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, and the identified entry point has an <code>OpExecutionMode</code> instruction that specifies a patch size with <code>OutputVertices</code>, the patch size <strong class=\"purple\">must</strong> be greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTessellationPatchSize</code>" 5104 }, 5105 { 5106 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00714", 5107 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies a maximum output vertex count that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxGeometryOutputVertices</code>" 5108 }, 5109 { 5110 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00715", 5111 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies an invocation count that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxGeometryShaderInvocations</code>" 5112 }, 5113 { 5114 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02596", 5115 "text": " If <code>stage</code> is a vertex processing stage, and the identified entry point writes to <code>Layer</code> for any primitive, it <strong class=\"purple\">must</strong> write the same value to <code>Layer</code> for all vertices of a given primitive" 5116 }, 5117 { 5118 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02597", 5119 "text": " If <code>stage</code> is a vertex processing stage, and the identified entry point writes to <code>ViewportIndex</code> for any primitive, it <strong class=\"purple\">must</strong> write the same value to <code>ViewportIndex</code> for all vertices of a given primitive" 5120 }, 5121 { 5122 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00718", 5123 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> not include any output variables in its interface decorated with <code>CullDistance</code>" 5124 }, 5125 { 5126 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00719", 5127 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, and the identified entry point writes to <code>FragDepth</code> in any execution path, it <strong class=\"purple\">must</strong> write to <code>FragDepth</code> in all execution paths" 5128 }, 5129 { 5130 "vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-sType", 5131 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO</code>" 5132 }, 5133 { 5134 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-pNext", 5135 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 5136 }, 5137 { 5138 "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-zerobitmask", 5139 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 5140 }, 5141 { 5142 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-parameter", 5143 "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value" 5144 }, 5145 { 5146 "vuid": "VUID-VkPipelineShaderStageCreateInfo-module-parameter", 5147 "text": " <code>module</code> <strong class=\"purple\">must</strong> be a valid <code>VkShaderModule</code> handle" 5148 }, 5149 { 5150 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-parameter", 5151 "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 5152 }, 5153 { 5154 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter", 5155 "text": " If <code>pSpecializationInfo</code> is not <code>NULL</code>, <code>pSpecializationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSpecializationInfo</code> structure" 5156 } 5157 ], 5158 "(VK_NV_mesh_shader)": [ 5159 { 5160 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02091", 5161 "text": " If the <a href=\"#features-meshShader\">mesh shader</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_MESH_BIT_NV</code>" 5162 }, 5163 { 5164 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02092", 5165 "text": " If the <a href=\"#features-taskShader\">task shader</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_TASK_BIT_NV</code>" 5166 }, 5167 { 5168 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02093", 5169 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_MESH_BIT_NV</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies a maximum output vertex count, <code>OutputVertices</code>, that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxMeshOutputVertices</code>." 5170 }, 5171 { 5172 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02094", 5173 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_MESH_BIT_NV</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies a maximum output primitive count, <code>OutputPrimitivesNV</code>, that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxMeshOutputPrimitives</code>." 5174 } 5175 ], 5176 "(VK_EXT_shader_stencil_export)": [ 5177 { 5178 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-01511", 5179 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, and the identified entry point writes to <code>FragStencilRefEXT</code> in any execution path, it <strong class=\"purple\">must</strong> write to <code>FragStencilRefEXT</code> in all execution paths" 5180 } 5181 ] 5182 }, 5183 "vkCreateGraphicsPipelines": { 5184 "core": [ 5185 { 5186 "vuid": "VUID-vkCreateGraphicsPipelines-flags-00720", 5187 "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element" 5188 }, 5189 { 5190 "vuid": "VUID-vkCreateGraphicsPipelines-flags-00721", 5191 "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set" 5192 }, 5193 { 5194 "vuid": "VUID-vkCreateGraphicsPipelines-device-parameter", 5195 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 5196 }, 5197 { 5198 "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parameter", 5199 "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle" 5200 }, 5201 { 5202 "vuid": "VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter", 5203 "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <code>VkGraphicsPipelineCreateInfo</code> structures" 5204 }, 5205 { 5206 "vuid": "VUID-vkCreateGraphicsPipelines-pAllocator-parameter", 5207 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 5208 }, 5209 { 5210 "vuid": "VUID-vkCreateGraphicsPipelines-pPipelines-parameter", 5211 "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <code>VkPipeline</code> handles" 5212 }, 5213 { 5214 "vuid": "VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength", 5215 "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 5216 }, 5217 { 5218 "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parent", 5219 "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 5220 } 5221 ] 5222 }, 5223 "VkGraphicsPipelineCreateInfo": { 5224 "core": [ 5225 { 5226 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00722", 5227 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a graphics <code>VkPipeline</code>" 5228 }, 5229 { 5230 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00723", 5231 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command’s <code>pCreateInfos</code> parameter" 5232 }, 5233 { 5234 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00724", 5235 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 5236 }, 5237 { 5238 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00725", 5239 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1" 5240 }, 5241 { 5242 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00726", 5243 "text": " The <code>stage</code> member of each element of <code>pStages</code> <strong class=\"purple\">must</strong> be unique" 5244 }, 5245 { 5246 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00728", 5247 "text": " The <code>stage</code> member of each element of <code>pStages</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>" 5248 }, 5249 { 5250 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00729", 5251 "text": " If <code>pStages</code> includes a tessellation control shader stage, it <strong class=\"purple\">must</strong> include a tessellation evaluation shader stage" 5252 }, 5253 { 5254 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00730", 5255 "text": " If <code>pStages</code> includes a tessellation evaluation shader stage, it <strong class=\"purple\">must</strong> include a tessellation control shader stage" 5256 }, 5257 { 5258 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00731", 5259 "text": " If <code>pStages</code> includes a tessellation control shader stage and a tessellation evaluation shader stage, <code>pTessellationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineTessellationStateCreateInfo</code> structure" 5260 }, 5261 { 5262 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00732", 5263 "text": " If <code>pStages</code> includes tessellation shader stages, the shader code of at least one stage <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies the type of subdivision in the pipeline" 5264 }, 5265 { 5266 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00733", 5267 "text": " If <code>pStages</code> includes tessellation shader stages, and the shader code of both stages contain an <code>OpExecutionMode</code> instruction that specifies the type of subdivision in the pipeline, they <strong class=\"purple\">must</strong> both specify the same subdivision mode" 5268 }, 5269 { 5270 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00734", 5271 "text": " If <code>pStages</code> includes tessellation shader stages, the shader code of at least one stage <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies the output patch size in the pipeline" 5272 }, 5273 { 5274 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00735", 5275 "text": " If <code>pStages</code> includes tessellation shader stages, and the shader code of both contain an <code>OpExecutionMode</code> instruction that specifies the out patch size in the pipeline, they <strong class=\"purple\">must</strong> both specify the same patch size" 5276 }, 5277 { 5278 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00736", 5279 "text": " If <code>pStages</code> includes tessellation shader stages, the <code>topology</code> member of <code>pInputAssembly</code> <strong class=\"purple\">must</strong> be <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>" 5280 }, 5281 { 5282 "vuid": "VUID-VkGraphicsPipelineCreateInfo-topology-00737", 5283 "text": " If the <code>topology</code> member of <code>pInputAssembly</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, <code>pStages</code> <strong class=\"purple\">must</strong> include tessellation shader stages" 5284 }, 5285 { 5286 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00738", 5287 "text": " If <code>pStages</code> includes a geometry shader stage, and does not include any tessellation shader stages, its shader code <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies an input primitive type that is <a href=\"#shaders-geometry-execution\">compatible</a> with the primitive topology specified in <code>pInputAssembly</code>" 5288 }, 5289 { 5290 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00739", 5291 "text": " If <code>pStages</code> includes a geometry shader stage, and also includes tessellation shader stages, its shader code <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies an input primitive type that is <a href=\"#shaders-geometry-execution\">compatible</a> with the primitive topology that is output by the tessellation stages" 5292 }, 5293 { 5294 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00740", 5295 "text": " If <code>pStages</code> includes a fragment shader stage and a geometry shader stage, and the fragment shader code reads from an input variable that is decorated with <code>PrimitiveID</code>, then the geometry shader code <strong class=\"purple\">must</strong> write to a matching output variable, decorated with <code>PrimitiveID</code>, in all execution paths" 5296 }, 5297 { 5298 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00741", 5299 "text": " If <code>pStages</code> includes a fragment shader stage, its shader code <strong class=\"purple\">must</strong> not read from any input attachment that is defined as <code>VK_ATTACHMENT_UNUSED</code> in <code>subpass</code>" 5300 }, 5301 { 5302 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00742", 5303 "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter" 5304 }, 5305 { 5306 "vuid": "VUID-VkGraphicsPipelineCreateInfo-blendEnable-02023", 5307 "text": " If rasterization is not disabled and the subpass uses color attachments, then for each color attachment in the subpass the <code>blendEnable</code> member of the corresponding element of the <code>pAttachment</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code> if the attached image’s <a href=\"#resources-image-format-features\">format features</a> does not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>." 5308 }, 5309 { 5310 "vuid": "VUID-VkGraphicsPipelineCreateInfo-attachmentCount-00746", 5311 "text": " If rasterization is not disabled and the subpass uses color attachments, the <code>attachmentCount</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be equal to the <code>colorAttachmentCount</code> used to create <code>subpass</code>" 5312 }, 5313 { 5314 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00747", 5315 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT</code>, the <code>pViewports</code> member of <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState</code>::<code>viewportCount</code> valid <code>VkViewport</code> structures" 5316 }, 5317 { 5318 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00748", 5319 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SCISSOR</code>, the <code>pScissors</code> member of <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState</code>::<code>scissorCount</code> <code>VkRect2D</code> structures" 5320 }, 5321 { 5322 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749", 5323 "text": " If the wide lines feature is not enabled, and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_LINE_WIDTH</code>, the <code>lineWidth</code> member of <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be <code>1.0</code>" 5324 }, 5325 { 5326 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750", 5327 "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineViewportStateCreateInfo</code> structure" 5328 }, 5329 { 5330 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751", 5331 "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineMultisampleStateCreateInfo</code> structure" 5332 }, 5333 { 5334 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00752", 5335 "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, and <code>subpass</code> uses a depth/stencil attachment, <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineDepthStencilStateCreateInfo</code> structure" 5336 }, 5337 { 5338 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00753", 5339 "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, and <code>subpass</code> uses color attachments, <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineColorBlendStateCreateInfo</code> structure" 5340 }, 5341 { 5342 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754", 5343 "text": " If the depth bias clamping feature is not enabled, no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code>, and the <code>depthBiasEnable</code> member of <code>pRasterizationState</code> is <code>VK_TRUE</code>, the <code>depthBiasClamp</code> member of <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be <code>0.0</code>" 5344 }, 5345 { 5346 "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-00756", 5347 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>" 5348 }, 5349 { 5350 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00757", 5351 "text": " If neither the <code>VK_AMD_mixed_attachment_samples</code> nor the <code>VK_NV_framebuffer_mixed_samples</code> extensions are enabled, and if <code>subpass</code> uses color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be the same as the sample count for those subpass attachments" 5352 }, 5353 { 5354 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00758", 5355 "text": " If <code>subpass</code> does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>" 5356 }, 5357 { 5358 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00759", 5359 "text": " <code>subpass</code> <strong class=\"purple\">must</strong> be a valid subpass within <code>renderPass</code>" 5360 }, 5361 { 5362 "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-01688", 5363 "text": " The number of resources in <code>layout</code> accessible to each shader stage that is used by the pipeline <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageResources</code>" 5364 }, 5365 { 5366 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02097", 5367 "text": " If <code>pStages</code> includes a vertex shader stage, <code>pVertexInputState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineVertexInputStateCreateInfo\">VkPipelineVertexInputStateCreateInfo</a> structure" 5368 }, 5369 { 5370 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02098", 5371 "text": " If <code>pStages</code> includes a vertex shader stage, <code>pInputAssemblyState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a> structure" 5372 }, 5373 { 5374 "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-sType", 5375 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO</code>" 5376 }, 5377 { 5378 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pNext-pNext", 5379 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a> or <a href=\"#VkPipelineRepresentativeFragmentTestStateCreateInfoNV\">VkPipelineRepresentativeFragmentTestStateCreateInfoNV</a>" 5380 }, 5381 { 5382 "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-unique", 5383 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 5384 }, 5385 { 5386 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-parameter", 5387 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values" 5388 }, 5389 { 5390 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-parameter", 5391 "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <code>VkPipelineShaderStageCreateInfo</code> structures" 5392 }, 5393 { 5394 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-parameter", 5395 "text": " <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineRasterizationStateCreateInfo</code> structure" 5396 }, 5397 { 5398 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter", 5399 "text": " If <code>pDynamicState</code> is not <code>NULL</code>, <code>pDynamicState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineDynamicStateCreateInfo</code> structure" 5400 }, 5401 { 5402 "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-parameter", 5403 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle" 5404 }, 5405 { 5406 "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-parameter", 5407 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle" 5408 }, 5409 { 5410 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stageCount-arraylength", 5411 "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 5412 }, 5413 { 5414 "vuid": "VUID-VkGraphicsPipelineCreateInfo-commonparent", 5415 "text": " Each of <code>basePipelineHandle</code>, <code>layout</code>, and <code>renderPass</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 5416 } 5417 ], 5418 "!(VK_NV_mesh_shader)": [ 5419 { 5420 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00727", 5421 "text": " The <code>stage</code> member of one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_VERTEX_BIT</code>" 5422 } 5423 ], 5424 "(VK_NV_mesh_shader)": [ 5425 { 5426 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02095", 5427 "text": " The geometric shader stages provided in <code>pStages</code> <strong class=\"purple\">must</strong> be either from the mesh shading pipeline (<code>stage</code> is <code>VK_SHADER_STAGE_TASK_BIT_NV</code> or <code>VK_SHADER_STAGE_MESH_BIT_NV</code>) or from the primitive shading pipeline (<code>stage</code> is <code>VK_SHADER_STAGE_VERTEX_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>)." 5428 }, 5429 { 5430 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-02096", 5431 "text": " The <code>stage</code> member of one element of <code>pStages</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_NV</code>." 5432 } 5433 ], 5434 "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 5435 { 5436 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00743", 5437 "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>depthWriteEnable</code> member of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 5438 }, 5439 { 5440 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00744", 5441 "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>failOp</code>, <code>passOp</code> and <code>depthFailOp</code> members of each of the <code>front</code> and <code>back</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>" 5442 } 5443 ], 5444 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 5445 { 5446 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01756", 5447 "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>depthWriteEnable</code> member of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 5448 }, 5449 { 5450 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01757", 5451 "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>failOp</code>, <code>passOp</code> and <code>depthFailOp</code> members of each of the <code>front</code> and <code>back</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>" 5452 }, 5453 { 5454 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-01565", 5455 "text": " If <code>pStages</code> includes a fragment shader stage and an input attachment was referenced by the <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a> at <code>renderPass</code> create time, its shader code <strong class=\"purple\">must</strong> not read from any aspect that was not specified in the <code>aspectMask</code> of the corresponding <a href=\"#VkInputAttachmentAspectReference\">VkInputAttachmentAspectReference</a> structure." 5456 } 5457 ], 5458 "!(VK_EXT_depth_range_unrestricted)": [ 5459 { 5460 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00755", 5461 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code>, and the <code>depthBoundsTestEnable</code> member of <code>pDepthStencilState</code> is <code>VK_TRUE</code>, the <code>minDepthBounds</code> and <code>maxDepthBounds</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 5462 } 5463 ], 5464 "(VK_EXT_depth_range_unrestricted)": [ 5465 { 5466 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510", 5467 "text": " If the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is not enabled and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code>, and the <code>depthBoundsTestEnable</code> member of <code>pDepthStencilState</code> is <code>VK_TRUE</code>, the <code>minDepthBounds</code> and <code>maxDepthBounds</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 5468 } 5469 ], 5470 "(VK_EXT_sample_locations)": [ 5471 { 5472 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521", 5473 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling <code>rasterizationSamples</code>" 5474 }, 5475 { 5476 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522", 5477 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling <code>rasterizationSamples</code>" 5478 }, 5479 { 5480 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523", 5481 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code>" 5482 }, 5483 { 5484 "vuid": "VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524", 5485 "text": " If the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>" 5486 } 5487 ], 5488 "(VK_AMD_mixed_attachment_samples)": [ 5489 { 5490 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01505", 5491 "text": " If the <code>VK_AMD_mixed_attachment_samples</code> extension is enabled, and if <code>subpass</code> uses color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> equal the maximum of the sample counts of those subpass attachments" 5492 } 5493 ], 5494 "(VK_NV_framebuffer_mixed_samples)": [ 5495 { 5496 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01411", 5497 "text": " If the <code>VK_NV_framebuffer_mixed_samples</code> extension is enabled, and if <code>subpass</code> has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment" 5498 }, 5499 { 5500 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01412", 5501 "text": " If the <code>VK_NV_framebuffer_mixed_samples</code> extension is enabled, and if <code>subpass</code> has any color attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be greater than or equal to the sample count for those subpass attachments" 5502 } 5503 ], 5504 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 5505 { 5506 "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00760", 5507 "text": " If the <code>renderPass</code> has multiview enabled and <code>subpass</code> has more than one bit set in the view mask and <code>multiviewTessellationShader</code> is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include tessellation shaders." 5508 }, 5509 { 5510 "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00761", 5511 "text": " If the <code>renderPass</code> has multiview enabled and <code>subpass</code> has more than one bit set in the view mask and <code>multiviewGeometryShader</code> is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include a geometry shader." 5512 }, 5513 { 5514 "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00762", 5515 "text": " If the <code>renderPass</code> has multiview enabled and <code>subpass</code> has more than one bit set in the view mask, shaders in the pipeline <strong class=\"purple\">must</strong> not write to the <code>Layer</code> built-in output" 5516 }, 5517 { 5518 "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00763", 5519 "text": " If the <code>renderPass</code> has multiview enabled, then all shaders <strong class=\"purple\">must</strong> not include variables decorated with the <code>Layer</code> built-in decoration in their interfaces." 5520 } 5521 ], 5522 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 5523 { 5524 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00764", 5525 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag." 5526 } 5527 ], 5528 "(VK_NV_clip_space_w_scaling)": [ 5529 { 5530 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715", 5531 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code>, and the <code>viewportWScalingEnable</code> member of a <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure, chained to the <code>pNext</code> chain of <code>pViewportState</code>, is <code>VK_TRUE</code>, the <code>pViewportWScalings</code> member of the <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> <strong class=\"purple\">must</strong> be a pointer to an array of <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> valid <a href=\"#VkViewportWScalingNV\">VkViewportWScalingNV</a> structures" 5532 } 5533 ], 5534 "(VK_EXT_transform_feedback)": [ 5535 { 5536 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02317", 5537 "text": " The <code>Xfb</code> execution mode <strong class=\"purple\">can</strong> be specified by only one shader stage in <code>pStages</code>" 5538 }, 5539 { 5540 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02318", 5541 "text": " If any shader stage in <code>pStages</code> specifies <code>Xfb</code> execution mode it <strong class=\"purple\">must</strong> be the last vertex processing stage" 5542 }, 5543 { 5544 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319", 5545 "text": " If a <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code> value other than zero is specified, all variables in the output interface of the entry point being compiled decorated with <code>Position</code>, <code>PointSize</code>, <code>ClipDistance</code>, or <code>CullDistance</code> <strong class=\"purple\">must</strong> all be decorated with identical <code>Stream</code> values that match the <code>rasterizationStream</code>" 5546 }, 5547 { 5548 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320", 5549 "text": " If <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code> is zero, or not specified, all variables in the output interface of the entry point being compiled decorated with <code>Position</code>, <code>PointSize</code>, <code>ClipDistance</code>, or <code>CullDistance</code> <strong class=\"purple\">must</strong> all be decorated with a <code>Stream</code> value of zero, or <strong class=\"purple\">must</strong> not specify the <code>Stream</code> decoration" 5550 }, 5551 { 5552 "vuid": "VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321", 5553 "text": " If the last vertex processing stage is a geometry shader, and that geometry shader uses the <code>GeometryStreams</code> capability, then <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>geometryStreams</code> feature <strong class=\"purple\">must</strong> be enabled" 5554 } 5555 ], 5556 "(VK_EXT_transform_feedback)+(VK_NV_mesh_shader)": [ 5557 { 5558 "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-02322", 5559 "text": " If there are any mesh shader stages in the pipeline there <strong class=\"purple\">must</strong> not be any shader stage in the pipeline with a <code>Xfb</code> execution mode." 5560 } 5561 ] 5562 }, 5563 "VkPipelineDynamicStateCreateInfo": { 5564 "core": [ 5565 { 5566 "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442", 5567 "text": " Each element of <code>pDynamicStates</code> <strong class=\"purple\">must</strong> be unique" 5568 }, 5569 { 5570 "vuid": "VUID-VkPipelineDynamicStateCreateInfo-sType-sType", 5571 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO</code>" 5572 }, 5573 { 5574 "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext", 5575 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 5576 }, 5577 { 5578 "vuid": "VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask", 5579 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 5580 }, 5581 { 5582 "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter", 5583 "text": " If <code>dynamicStateCount</code> is not <code>0</code>, <code>pDynamicStates</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dynamicStateCount</code> valid <a href=\"#VkDynamicState\">VkDynamicState</a> values" 5584 } 5585 ] 5586 }, 5587 "vkDestroyPipeline": { 5588 "core": [ 5589 { 5590 "vuid": "VUID-vkDestroyPipeline-pipeline-00765", 5591 "text": " All submitted commands that refer to <code>pipeline</code> <strong class=\"purple\">must</strong> have completed execution" 5592 }, 5593 { 5594 "vuid": "VUID-vkDestroyPipeline-pipeline-00766", 5595 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 5596 }, 5597 { 5598 "vuid": "VUID-vkDestroyPipeline-pipeline-00767", 5599 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 5600 }, 5601 { 5602 "vuid": "VUID-vkDestroyPipeline-device-parameter", 5603 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 5604 }, 5605 { 5606 "vuid": "VUID-vkDestroyPipeline-pipeline-parameter", 5607 "text": " If <code>pipeline</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle" 5608 }, 5609 { 5610 "vuid": "VUID-vkDestroyPipeline-pAllocator-parameter", 5611 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 5612 }, 5613 { 5614 "vuid": "VUID-vkDestroyPipeline-pipeline-parent", 5615 "text": " If <code>pipeline</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 5616 } 5617 ] 5618 }, 5619 "vkCreatePipelineCache": { 5620 "core": [ 5621 { 5622 "vuid": "VUID-vkCreatePipelineCache-device-parameter", 5623 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 5624 }, 5625 { 5626 "vuid": "VUID-vkCreatePipelineCache-pCreateInfo-parameter", 5627 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineCacheCreateInfo</code> structure" 5628 }, 5629 { 5630 "vuid": "VUID-vkCreatePipelineCache-pAllocator-parameter", 5631 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 5632 }, 5633 { 5634 "vuid": "VUID-vkCreatePipelineCache-pPipelineCache-parameter", 5635 "text": " <code>pPipelineCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPipelineCache</code> handle" 5636 } 5637 ] 5638 }, 5639 "VkPipelineCacheCreateInfo": { 5640 "core": [ 5641 { 5642 "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00768", 5643 "text": " If <code>initialDataSize</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to the size of <code>pInitialData</code>, as returned by <code>vkGetPipelineCacheData</code> when <code>pInitialData</code> was originally retrieved" 5644 }, 5645 { 5646 "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00769", 5647 "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> have been retrieved from a previous call to <code>vkGetPipelineCacheData</code>" 5648 }, 5649 { 5650 "vuid": "VUID-VkPipelineCacheCreateInfo-sType-sType", 5651 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO</code>" 5652 }, 5653 { 5654 "vuid": "VUID-VkPipelineCacheCreateInfo-pNext-pNext", 5655 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 5656 }, 5657 { 5658 "vuid": "VUID-VkPipelineCacheCreateInfo-flags-zerobitmask", 5659 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 5660 }, 5661 { 5662 "vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-parameter", 5663 "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>initialDataSize</code> bytes" 5664 } 5665 ] 5666 }, 5667 "vkMergePipelineCaches": { 5668 "core": [ 5669 { 5670 "vuid": "VUID-vkMergePipelineCaches-dstCache-00770", 5671 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches" 5672 }, 5673 { 5674 "vuid": "VUID-vkMergePipelineCaches-device-parameter", 5675 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 5676 }, 5677 { 5678 "vuid": "VUID-vkMergePipelineCaches-dstCache-parameter", 5679 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle" 5680 }, 5681 { 5682 "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parameter", 5683 "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <code>VkPipelineCache</code> handles" 5684 }, 5685 { 5686 "vuid": "VUID-vkMergePipelineCaches-srcCacheCount-arraylength", 5687 "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 5688 }, 5689 { 5690 "vuid": "VUID-vkMergePipelineCaches-dstCache-parent", 5691 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 5692 }, 5693 { 5694 "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parent", 5695 "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 5696 } 5697 ] 5698 }, 5699 "vkGetPipelineCacheData": { 5700 "core": [ 5701 { 5702 "vuid": "VUID-vkGetPipelineCacheData-device-parameter", 5703 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 5704 }, 5705 { 5706 "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parameter", 5707 "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle" 5708 }, 5709 { 5710 "vuid": "VUID-vkGetPipelineCacheData-pDataSize-parameter", 5711 "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value" 5712 }, 5713 { 5714 "vuid": "VUID-vkGetPipelineCacheData-pData-parameter", 5715 "text": " If the value referenced by <code>pDataSize</code> is not <code>0</code>, and <code>pData</code> is not <code>NULL</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDataSize</code> bytes" 5716 }, 5717 { 5718 "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parent", 5719 "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 5720 } 5721 ] 5722 }, 5723 "vkDestroyPipelineCache": { 5724 "core": [ 5725 { 5726 "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00771", 5727 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 5728 }, 5729 { 5730 "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00772", 5731 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 5732 }, 5733 { 5734 "vuid": "VUID-vkDestroyPipelineCache-device-parameter", 5735 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 5736 }, 5737 { 5738 "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parameter", 5739 "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle" 5740 }, 5741 { 5742 "vuid": "VUID-vkDestroyPipelineCache-pAllocator-parameter", 5743 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 5744 }, 5745 { 5746 "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parent", 5747 "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 5748 } 5749 ] 5750 }, 5751 "VkSpecializationInfo": { 5752 "core": [ 5753 { 5754 "vuid": "VUID-VkSpecializationInfo-offset-00773", 5755 "text": " The <code>offset</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than <code>dataSize</code>" 5756 }, 5757 { 5758 "vuid": "VUID-VkSpecializationInfo-pMapEntries-00774", 5759 "text": " The <code>size</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dataSize</code> minus <code>offset</code>" 5760 }, 5761 { 5762 "vuid": "VUID-VkSpecializationInfo-pMapEntries-parameter", 5763 "text": " If <code>mapEntryCount</code> is not <code>0</code>, <code>pMapEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>mapEntryCount</code> valid <code>VkSpecializationMapEntry</code> structures" 5764 }, 5765 { 5766 "vuid": "VUID-VkSpecializationInfo-pData-parameter", 5767 "text": " If <code>dataSize</code> is not <code>0</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes" 5768 } 5769 ] 5770 }, 5771 "VkSpecializationMapEntry": { 5772 "core": [ 5773 { 5774 "vuid": "VUID-VkSpecializationMapEntry-constantID-00776", 5775 "text": " For a <code>constantID</code> specialization constant declared in a shader, <code>size</code> <strong class=\"purple\">must</strong> match the byte size of the <code>constantID</code>. If the specialization constant is of type <code>boolean</code>, <code>size</code> <strong class=\"purple\">must</strong> be the byte size of <code>VkBool32</code>" 5776 } 5777 ] 5778 }, 5779 "vkCmdBindPipeline": { 5780 "core": [ 5781 { 5782 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00777", 5783 "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 5784 }, 5785 { 5786 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00778", 5787 "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 5788 }, 5789 { 5790 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00779", 5791 "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a compute pipeline" 5792 }, 5793 { 5794 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00780", 5795 "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a graphics pipeline" 5796 }, 5797 { 5798 "vuid": "VUID-vkCmdBindPipeline-pipeline-00781", 5799 "text": " If the <a href=\"#features-variableMultisampleRate\">variable multisample rate</a> feature is not supported, <code>pipeline</code> is a graphics pipeline, the current subpass has no attachments, and this is not the first call to this function with a graphics pipeline after transitioning to the current subpass, then the sample count specified by this pipeline <strong class=\"purple\">must</strong> match that set in the previous pipeline" 5800 }, 5801 { 5802 "vuid": "VUID-vkCmdBindPipeline-commandBuffer-parameter", 5803 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 5804 }, 5805 { 5806 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-parameter", 5807 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 5808 }, 5809 { 5810 "vuid": "VUID-vkCmdBindPipeline-pipeline-parameter", 5811 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle" 5812 }, 5813 { 5814 "vuid": "VUID-vkCmdBindPipeline-commandBuffer-recording", 5815 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 5816 }, 5817 { 5818 "vuid": "VUID-vkCmdBindPipeline-commandBuffer-cmdpool", 5819 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 5820 }, 5821 { 5822 "vuid": "VUID-vkCmdBindPipeline-commonparent", 5823 "text": " Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 5824 } 5825 ], 5826 "(VK_EXT_sample_locations)": [ 5827 { 5828 "vuid": "VUID-vkCmdBindPipeline-variableSampleLocations-01525", 5829 "text": " If <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>variableSampleLocations</code> is <code>VK_FALSE</code>, and <code>pipeline</code> is a graphics pipeline created with a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure having its <code>sampleLocationsEnable</code> member set to <code>VK_TRUE</code> but without <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> enabled then the current render pass instance <strong class=\"purple\">must</strong> have been begun by specifying a <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a> structure whose <code>pPostSubpassSampleLocations</code> member contains an element with a <code>subpassIndex</code> matching the current subpass index and the <code>sampleLocationsInfo</code> member of that element <strong class=\"purple\">must</strong> match the <code>sampleLocationsInfo</code> specified in <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> when the pipeline was created" 5830 } 5831 ], 5832 "(VK_EXT_transform_feedback)": [ 5833 { 5834 "vuid": "VUID-vkCmdBindPipeline-None-02323", 5835 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active" 5836 } 5837 ], 5838 "(VK_NV_ray_tracing)": [ 5839 { 5840 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02391", 5841 "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 5842 }, 5843 { 5844 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02392", 5845 "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, the <code>pipeline</code> <strong class=\"purple\">must</strong> be a ray tracing pipeline" 5846 } 5847 ] 5848 }, 5849 "vkGetShaderInfoAMD": { 5850 "(VK_AMD_shader_info)": [ 5851 { 5852 "vuid": "VUID-vkGetShaderInfoAMD-device-parameter", 5853 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 5854 }, 5855 { 5856 "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parameter", 5857 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle" 5858 }, 5859 { 5860 "vuid": "VUID-vkGetShaderInfoAMD-shaderStage-parameter", 5861 "text": " <code>shaderStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value" 5862 }, 5863 { 5864 "vuid": "VUID-vkGetShaderInfoAMD-infoType-parameter", 5865 "text": " <code>infoType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderInfoTypeAMD\">VkShaderInfoTypeAMD</a> value" 5866 }, 5867 { 5868 "vuid": "VUID-vkGetShaderInfoAMD-pInfoSize-parameter", 5869 "text": " <code>pInfoSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value" 5870 }, 5871 { 5872 "vuid": "VUID-vkGetShaderInfoAMD-pInfo-parameter", 5873 "text": " If the value referenced by <code>pInfoSize</code> is not <code>0</code>, and <code>pInfo</code> is not <code>NULL</code>, <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfoSize</code> bytes" 5874 }, 5875 { 5876 "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parent", 5877 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 5878 } 5879 ] 5880 }, 5881 "vkCreateRayTracingPipelinesNV": { 5882 "(VK_NV_ray_tracing)": [ 5883 { 5884 "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-02402", 5885 "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element" 5886 }, 5887 { 5888 "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-02403", 5889 "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set" 5890 }, 5891 { 5892 "vuid": "VUID-vkCreateRayTracingPipelinesNV-device-parameter", 5893 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 5894 }, 5895 { 5896 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter", 5897 "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle" 5898 }, 5899 { 5900 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter", 5901 "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <code>VkRayTracingPipelineCreateInfoNV</code> structures" 5902 }, 5903 { 5904 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter", 5905 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 5906 }, 5907 { 5908 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter", 5909 "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <code>VkPipeline</code> handles" 5910 }, 5911 { 5912 "vuid": "VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength", 5913 "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 5914 }, 5915 { 5916 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent", 5917 "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 5918 } 5919 ] 5920 }, 5921 "VkRayTracingPipelineCreateInfoNV": { 5922 "(VK_NV_ray_tracing)": [ 5923 { 5924 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02404", 5925 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a ray tracing <code>VkPipeline</code>" 5926 }, 5927 { 5928 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02405", 5929 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command’s <code>pCreateInfos</code> parameter" 5930 }, 5931 { 5932 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02406", 5933 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 5934 }, 5935 { 5936 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02407", 5937 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be <code>-1</code>" 5938 }, 5939 { 5940 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stage-02408", 5941 "text": " The <code>stage</code> member of one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_RAYGEN_BIT_NV</code>" 5942 }, 5943 { 5944 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-02409", 5945 "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter" 5946 }, 5947 { 5948 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-02410", 5949 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>" 5950 }, 5951 { 5952 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-02411", 5953 "text": " The number of resources in <code>layout</code> accessible to each shader stage that is used by the pipeline <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxPerStageResources</code>" 5954 }, 5955 { 5956 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-02412", 5957 "text": " <code>maxRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxRecursionDepth</code>" 5958 }, 5959 { 5960 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-sType", 5961 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV</code>" 5962 }, 5963 { 5964 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext", 5965 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 5966 }, 5967 { 5968 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter", 5969 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values" 5970 }, 5971 { 5972 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter", 5973 "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <code>VkPipelineShaderStageCreateInfo</code> structures" 5974 }, 5975 { 5976 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter", 5977 "text": " <code>pGroups</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>groupCount</code> valid <code>VkRayTracingShaderGroupCreateInfoNV</code> structures" 5978 }, 5979 { 5980 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter", 5981 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle" 5982 }, 5983 { 5984 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength", 5985 "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 5986 }, 5987 { 5988 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength", 5989 "text": " <code>groupCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 5990 }, 5991 { 5992 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-commonparent", 5993 "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 5994 } 5995 ] 5996 }, 5997 "VkRayTracingShaderGroupCreateInfoNV": { 5998 "(VK_NV_ray_tracing)": [ 5999 { 6000 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413", 6001 "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV</code> then <code>generalShader</code> <strong class=\"purple\">must</strong> be a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_RAYGEN_BIT_NV</code>, <code>VK_SHADER_STAGE_MISS_BIT_NV</code>, or <code>VK_SHADER_STAGE_CALLABLE_BIT_NV</code>" 6002 }, 6003 { 6004 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414", 6005 "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV</code> then <code>closestHitShader</code>, <code>anyHitShader</code>, and <code>intersectionShader</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_UNUSED_NV</code>" 6006 }, 6007 { 6008 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415", 6009 "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_INTERSECTION_BIT_NV</code>" 6010 }, 6011 { 6012 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416", 6013 "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_UNUSED_NV</code>" 6014 }, 6015 { 6016 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417", 6017 "text": " <code>closestHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_NV</code> or a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV</code>" 6018 }, 6019 { 6020 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418", 6021 "text": " <code>anyHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_NV</code> or a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_ANY_HIT_BIT_NV</code>" 6022 }, 6023 { 6024 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType", 6025 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV</code>" 6026 }, 6027 { 6028 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext", 6029 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 6030 }, 6031 { 6032 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter", 6033 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRayTracingShaderGroupTypeNV\">VkRayTracingShaderGroupTypeNV</a> value" 6034 } 6035 ] 6036 }, 6037 "vkGetRayTracingShaderGroupHandlesNV": { 6038 "(VK_NV_ray_tracing)": [ 6039 { 6040 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-firstGroup-02419", 6041 "text": " The sum of <code>firstGroup</code> and <code>groupCount</code> <strong class=\"purple\">must</strong> be less than the number of shader groups in <code>pipeline</code>." 6042 }, 6043 { 6044 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-dataSize-02420", 6045 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be at least <span class=\"eq\"><code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code> {times} <code>groupCount</code></span>" 6046 }, 6047 { 6048 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-device-parameter", 6049 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 6050 }, 6051 { 6052 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-pipeline-parameter", 6053 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle" 6054 }, 6055 { 6056 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-pData-parameter", 6057 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes" 6058 }, 6059 { 6060 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-dataSize-arraylength", 6061 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 6062 }, 6063 { 6064 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-pipeline-parent", 6065 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 6066 } 6067 ] 6068 }, 6069 "vkCompileDeferredNV": { 6070 "(VK_NV_ray_tracing)": [ 6071 { 6072 "vuid": "VUID-vkCompileDeferredNV-pipeline-02237", 6073 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV</code>" 6074 }, 6075 { 6076 "vuid": "VUID-vkCompileDeferredNV-shader-02238", 6077 "text": " <code>shader</code> <strong class=\"purple\">must</strong> not have been called as a deferred compile before" 6078 }, 6079 { 6080 "vuid": "VUID-vkCompileDeferredNV-device-parameter", 6081 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 6082 }, 6083 { 6084 "vuid": "VUID-vkCompileDeferredNV-pipeline-parameter", 6085 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle" 6086 }, 6087 { 6088 "vuid": "VUID-vkCompileDeferredNV-pipeline-parent", 6089 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 6090 } 6091 ] 6092 }, 6093 "VkAllocationCallbacks": { 6094 "core": [ 6095 { 6096 "vuid": "VUID-VkAllocationCallbacks-pfnAllocation-00632", 6097 "text": " <code>pfnAllocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkAllocationFunction\">PFN_vkAllocationFunction</a>" 6098 }, 6099 { 6100 "vuid": "VUID-VkAllocationCallbacks-pfnReallocation-00633", 6101 "text": " <code>pfnReallocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkReallocationFunction\">PFN_vkReallocationFunction</a>" 6102 }, 6103 { 6104 "vuid": "VUID-VkAllocationCallbacks-pfnFree-00634", 6105 "text": " <code>pfnFree</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkFreeFunction\">PFN_vkFreeFunction</a>" 6106 }, 6107 { 6108 "vuid": "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635", 6109 "text": " If either of <code>pfnInternalAllocation</code> or <code>pfnInternalFree</code> is not <code>NULL</code>, both <strong class=\"purple\">must</strong> be valid callbacks" 6110 } 6111 ] 6112 }, 6113 "vkGetPhysicalDeviceMemoryProperties": { 6114 "core": [ 6115 { 6116 "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter", 6117 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 6118 }, 6119 { 6120 "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-pMemoryProperties-parameter", 6121 "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceMemoryProperties</code> structure" 6122 } 6123 ] 6124 }, 6125 "vkGetPhysicalDeviceMemoryProperties2": { 6126 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 6127 { 6128 "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter", 6129 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 6130 }, 6131 { 6132 "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-pMemoryProperties-parameter", 6133 "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceMemoryProperties2</code> structure" 6134 } 6135 ] 6136 }, 6137 "VkPhysicalDeviceMemoryProperties2": { 6138 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 6139 { 6140 "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-sType", 6141 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2</code>" 6142 }, 6143 { 6144 "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-pNext-pNext", 6145 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceMemoryBudgetPropertiesEXT\">VkPhysicalDeviceMemoryBudgetPropertiesEXT</a>" 6146 } 6147 ] 6148 }, 6149 "VkPhysicalDeviceMemoryBudgetPropertiesEXT": { 6150 "(VK_EXT_memory_budget)": [ 6151 { 6152 "vuid": "VUID-VkPhysicalDeviceMemoryBudgetPropertiesEXT-sType-sType", 6153 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT</code>" 6154 } 6155 ] 6156 }, 6157 "vkAllocateMemory": { 6158 "core": [ 6159 { 6160 "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01713", 6161 "text": " <code>pAllocateInfo</code>-><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>-><code>memoryTypeIndex</code>].<code>size</code> as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from." 6162 }, 6163 { 6164 "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01714", 6165 "text": " <code>pAllocateInfo</code>-><code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryTypeCount</code> as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from." 6166 }, 6167 { 6168 "vuid": "VUID-vkAllocateMemory-device-parameter", 6169 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 6170 }, 6171 { 6172 "vuid": "VUID-vkAllocateMemory-pAllocateInfo-parameter", 6173 "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryAllocateInfo</code> structure" 6174 }, 6175 { 6176 "vuid": "VUID-vkAllocateMemory-pAllocator-parameter", 6177 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 6178 }, 6179 { 6180 "vuid": "VUID-vkAllocateMemory-pMemory-parameter", 6181 "text": " <code>pMemory</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceMemory</code> handle" 6182 } 6183 ] 6184 }, 6185 "VkMemoryAllocateInfo": { 6186 "!(VK_ANDROID_external_memory_android_hardware_buffer)": [ 6187 { 6188 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00638", 6189 "text": " <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 6190 } 6191 ], 6192 "(VK_KHR_external_memory)+(VK_KHR_dedicated_allocation,VK_NV_dedicated_allocation)": [ 6193 { 6194 "vuid": "VUID-VkMemoryAllocateInfo-pNext-00639", 6195 "text": " If the <code>pNext</code> chain contains an instance of <code>VkExportMemoryAllocateInfo</code>, and any of the handle types specified in <code>VkExportMemoryAllocateInfo</code>::<code>handleTypes</code> require a dedicated allocation, as reported by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> in <code>VkExternalImageFormatProperties</code>::<code>externalMemoryProperties</code>::<code>externalMemoryFeatures</code> or <code>VkExternalBufferProperties</code>::<code>externalMemoryProperties</code>::<code>externalMemoryFeatures</code>, the <code>pNext</code> chain must contain an instance of ifdef::VK_KHR_dedicated_allocation[<a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>]" 6196 } 6197 ], 6198 "(VK_KHR_external_memory)+(VK_NV_external_memory)": [ 6199 { 6200 "vuid": "VUID-VkMemoryAllocateInfo-pNext-00640", 6201 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>, it <strong class=\"purple\">must</strong> not contain an instance of <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a> or <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a>." 6202 } 6203 ], 6204 "(VK_KHR_external_memory_win32+VK_NV_external_memory_win32)": [ 6205 { 6206 "vuid": "VUID-VkMemoryAllocateInfo-pNext-00641", 6207 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>, it <strong class=\"purple\">must</strong> not contain an instance of <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a>." 6208 } 6209 ], 6210 "(VK_KHR_external_memory_fd)": [ 6211 { 6212 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01742", 6213 "text": " If the parameters define an import operation, the external handle specified was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the memory object being imported was created." 6214 }, 6215 { 6216 "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00648", 6217 "text": " If the parameters define an import operation and the external handle is a POSIX file descriptor created outside of the Vulkan API, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryFdPropertiesKHR\">vkGetMemoryFdPropertiesKHR</a>." 6218 } 6219 ], 6220 "(VK_KHR_external_memory+VK_KHR_device_group)": [ 6221 { 6222 "vuid": "VUID-VkMemoryAllocateInfo-None-00643", 6223 "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the device mask specified by <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a> <strong class=\"purple\">must</strong> match that specified when the memory object being imported was allocated." 6224 }, 6225 { 6226 "vuid": "VUID-VkMemoryAllocateInfo-None-00644", 6227 "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the list of physical devices that comprise the logical device passed to <a href=\"#vkAllocateMemory\">vkAllocateMemory</a> <strong class=\"purple\">must</strong> match the list of physical devices that comprise the logical device on which the memory was originally allocated." 6228 } 6229 ], 6230 "(VK_KHR_external_memory_win32)": [ 6231 { 6232 "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00645", 6233 "text": " If the parameters define an import operation and the external handle is an NT handle or a global share handle created outside of the Vulkan API, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryWin32HandlePropertiesKHR\">vkGetMemoryWin32HandlePropertiesKHR</a>." 6234 }, 6235 { 6236 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01743", 6237 "text": " If the parameters define an import operation, the external handle was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the memory object being imported was created." 6238 }, 6239 { 6240 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00646", 6241 "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> match the size reported in the memory requirements of the <code>image</code> or <code>buffer</code> member of the instance of <code>VkDedicatedAllocationMemoryAllocateInfoNV</code> included in the <code>pNext</code> chain." 6242 }, 6243 { 6244 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00647", 6245 "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> match the size specified when creating the Direct3D 12 heap from which the external handle was extracted." 6246 } 6247 ], 6248 "(VK_VERSION_1_1)": [ 6249 { 6250 "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872", 6251 "text": " If the protected memory feature is not enabled, the <code>VkMemoryAllocateInfo</code>::<code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> not indicate a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>." 6252 } 6253 ], 6254 "(VK_EXT_external_memory_host)": [ 6255 { 6256 "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01744", 6257 "text": " If the parameters define an import operation and the external handle is a host pointer, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryHostPointerPropertiesEXT\">vkGetMemoryHostPointerPropertiesEXT</a>" 6258 }, 6259 { 6260 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01745", 6261 "text": " If the parameters define an import operation and the external handle is a host pointer, <code>allocationSize</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>" 6262 } 6263 ], 6264 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 6265 { 6266 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-02383", 6267 "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> be the size returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> for the Android hardware buffer." 6268 }, 6269 { 6270 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02384", 6271 "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, and the <code>pNext</code> chain does not contain an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> or <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer <strong class=\"purple\">must</strong> have a <code>AHardwareBuffer_Desc</code>::<code>format</code> of <code>AHARDWAREBUFFER_FORMAT_BLOB</code> and a <code>AHardwareBuffer_Desc</code>::<code>usage</code> that includes <code>AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER</code>." 6272 }, 6273 { 6274 "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-02385", 6275 "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> for the Android hardware buffer." 6276 }, 6277 { 6278 "vuid": "VUID-VkMemoryAllocateInfo-pNext-01874", 6279 "text": " If the parameters do not define an import operation, and the <code>pNext</code> chain contains an instance of <code>VkExportMemoryAllocateInfo</code> with <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> included in its <code>handleTypes</code> member, and the <code>pNext</code> contains an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>allocationSize</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>." 6280 }, 6281 { 6282 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02386", 6283 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer’s <a href=\"#AHardwareBuffer\">AHardwareBuffer</a>::<code>usage</code> <strong class=\"purple\">must</strong> include at least one of <code>AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT</code> or <code>AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE</code>." 6284 }, 6285 { 6286 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02387", 6287 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the format of <code>image</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code> or the format returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> in <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a>::<code>format</code> for the Android hardware buffer." 6288 }, 6289 { 6290 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02388", 6291 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the width, height, and array layer dimensions of <code>image</code> and the Android hardware buffer’s <code>AHardwareBuffer_Desc</code> <strong class=\"purple\">must</strong> be identical." 6292 }, 6293 { 6294 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02389", 6295 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer’s <a href=\"#AHardwareBuffer\">AHardwareBuffer</a>::<code>usage</code> includes <code>AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE</code>, the <code>image</code> <strong class=\"purple\">must</strong> have a complete mipmap chain." 6296 }, 6297 { 6298 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02586", 6299 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer’s <a href=\"#AHardwareBuffer\">AHardwareBuffer</a>::<code>usage</code> does not include <code>AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE</code>, the <code>image</code> <strong class=\"purple\">must</strong> have exactly one mipmap level." 6300 }, 6301 { 6302 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02390", 6303 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, each bit set in the usage of <code>image</code> <strong class=\"purple\">must</strong> be listed in <a href=\"#memory-external-android-hardware-buffer-usage\">AHardwareBuffer Usage Equivalence</a>, and if there is a corresponding <code>AHARDWAREBUFFER_USAGE</code> bit listed that bit <strong class=\"purple\">must</strong> be included in the Android hardware buffer’s <code>AHardwareBuffer_Desc</code>::<code>usage</code>." 6304 } 6305 ], 6306 "core": [ 6307 { 6308 "vuid": "VUID-VkMemoryAllocateInfo-sType-sType", 6309 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO</code>" 6310 }, 6311 { 6312 "vuid": "VUID-VkMemoryAllocateInfo-pNext-pNext", 6313 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>, <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryWin32HandleInfoKHR\">VkExportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a>, <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a>, <a href=\"#VkImportMemoryFdInfoKHR\">VkImportMemoryFdInfoKHR</a>, <a href=\"#VkImportMemoryHostPointerInfoEXT\">VkImportMemoryHostPointerInfoEXT</a>, <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a>, <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a>, <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>, or <a href=\"#VkMemoryPriorityAllocateInfoEXT\">VkMemoryPriorityAllocateInfoEXT</a>" 6314 }, 6315 { 6316 "vuid": "VUID-VkMemoryAllocateInfo-sType-unique", 6317 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 6318 } 6319 ] 6320 }, 6321 "VkMemoryDedicatedAllocateInfo": { 6322 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 6323 { 6324 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01432", 6325 "text": " At least one of <code>image</code> and <code>buffer</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 6326 }, 6327 { 6328 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01433", 6329 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image" 6330 }, 6331 { 6332 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01434", 6333 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> have been created without <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code> set in <code>VkImageCreateInfo</code>::<code>flags</code>" 6334 }, 6335 { 6336 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01435", 6337 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer" 6338 }, 6339 { 6340 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01436", 6341 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> have been created without <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code> set in <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a>::<code>flags</code>" 6342 }, 6343 { 6344 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-sType-sType", 6345 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO</code>" 6346 }, 6347 { 6348 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-parameter", 6349 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 6350 }, 6351 { 6352 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-parameter", 6353 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 6354 }, 6355 { 6356 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-commonparent", 6357 "text": " Both of <code>buffer</code>, and <code>image</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 6358 } 6359 ], 6360 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_win32)": [ 6361 { 6362 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01876", 6363 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> must be identical to the image associated with the imported memory." 6364 }, 6365 { 6366 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01877", 6367 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> must be identical to the buffer associated with the imported memory." 6368 } 6369 ], 6370 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_fd)": [ 6371 { 6372 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01878", 6373 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> must be identical to the image associated with the imported memory." 6374 }, 6375 { 6376 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01879", 6377 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> must be identical to the buffer associated with the imported memory." 6378 } 6379 ], 6380 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_sampler_ycbcr_conversion)": [ 6381 { 6382 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01797", 6383 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code>" 6384 } 6385 ] 6386 }, 6387 "VkDedicatedAllocationMemoryAllocateInfoNV": { 6388 "(VK_NV_dedicated_allocation)": [ 6389 { 6390 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00649", 6391 "text": " At least one of <code>image</code> and <code>buffer</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 6392 }, 6393 { 6394 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00650", 6395 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the image <strong class=\"purple\">must</strong> have been created with <code>VkDedicatedAllocationImageCreateInfoNV</code>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>" 6396 }, 6397 { 6398 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00651", 6399 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the buffer <strong class=\"purple\">must</strong> have been created with <code>VkDedicatedAllocationBufferCreateInfoNV</code>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>" 6400 }, 6401 { 6402 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00652", 6403 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image" 6404 }, 6405 { 6406 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00653", 6407 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer" 6408 }, 6409 { 6410 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-sType-sType", 6411 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV</code>" 6412 }, 6413 { 6414 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-parameter", 6415 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 6416 }, 6417 { 6418 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-parameter", 6419 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 6420 }, 6421 { 6422 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-commonparent", 6423 "text": " Both of <code>buffer</code>, and <code>image</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 6424 } 6425 ], 6426 "(VK_NV_dedicated_allocation)+(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd)": [ 6427 { 6428 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00654", 6429 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> <strong class=\"purple\">must</strong> be identical to the image associated with the imported memory." 6430 }, 6431 { 6432 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00655", 6433 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory." 6434 } 6435 ] 6436 }, 6437 "VkMemoryPriorityAllocateInfoEXT": { 6438 "(VK_EXT_memory_priority)": [ 6439 { 6440 "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-priority-02602", 6441 "text": " <code>priority</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive" 6442 }, 6443 { 6444 "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-sType-sType", 6445 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT</code>" 6446 } 6447 ] 6448 }, 6449 "VkExportMemoryAllocateInfo": { 6450 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 6451 { 6452 "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-00656", 6453 "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>." 6454 }, 6455 { 6456 "vuid": "VUID-VkExportMemoryAllocateInfo-sType-sType", 6457 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO</code>" 6458 }, 6459 { 6460 "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-parameter", 6461 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values" 6462 } 6463 ] 6464 }, 6465 "VkExportMemoryWin32HandleInfoKHR": { 6466 "(VK_KHR_external_memory_win32)": [ 6467 { 6468 "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-handleTypes-00657", 6469 "text": " If <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>VkExportMemoryWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a>." 6470 }, 6471 { 6472 "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-sType-sType", 6473 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>" 6474 }, 6475 { 6476 "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-pAttributes-parameter", 6477 "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value" 6478 } 6479 ] 6480 }, 6481 "VkImportMemoryWin32HandleInfoKHR": { 6482 "(VK_KHR_external_memory_win32)": [ 6483 { 6484 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658", 6485 "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>." 6486 }, 6487 { 6488 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659", 6489 "text": " The memory from which <code>handle</code> was exported, or the memory named by <code>name</code> <strong class=\"purple\">must</strong> have been created on the same underlying physical device as <code>device</code>." 6490 }, 6491 { 6492 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00660", 6493 "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle." 6494 }, 6495 { 6496 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01439", 6497 "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>." 6498 }, 6499 { 6500 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01440", 6501 "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid memory resource of the type specified by <code>handleType</code>." 6502 }, 6503 { 6504 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00661", 6505 "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>." 6506 }, 6507 { 6508 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441", 6509 "text": " if <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>." 6510 }, 6511 { 6512 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518", 6513 "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>." 6514 }, 6515 { 6516 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-name-01519", 6517 "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>." 6518 }, 6519 { 6520 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-sType-sType", 6521 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>" 6522 }, 6523 { 6524 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter", 6525 "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 6526 } 6527 ] 6528 }, 6529 "vkGetMemoryWin32HandleKHR": { 6530 "(VK_KHR_external_memory_win32)": [ 6531 { 6532 "vuid": "VUID-vkGetMemoryWin32HandleKHR-device-parameter", 6533 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 6534 }, 6535 { 6536 "vuid": "VUID-vkGetMemoryWin32HandleKHR-pGetWin32HandleInfo-parameter", 6537 "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryGetWin32HandleInfoKHR</code> structure" 6538 }, 6539 { 6540 "vuid": "VUID-vkGetMemoryWin32HandleKHR-pHandle-parameter", 6541 "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value" 6542 } 6543 ] 6544 }, 6545 "VkMemoryGetWin32HandleInfoKHR": { 6546 "(VK_KHR_external_memory_win32)": [ 6547 { 6548 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00662", 6549 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created." 6550 }, 6551 { 6552 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00663", 6553 "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetMemoryWin32HandleKHR\">vkGetMemoryWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>memory</code> and <code>handleType</code>." 6554 }, 6555 { 6556 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00664", 6557 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle." 6558 }, 6559 { 6560 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType", 6561 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR</code>" 6562 }, 6563 { 6564 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext", 6565 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 6566 }, 6567 { 6568 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter", 6569 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle" 6570 }, 6571 { 6572 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter", 6573 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 6574 } 6575 ] 6576 }, 6577 "vkGetMemoryWin32HandlePropertiesKHR": { 6578 "(VK_KHR_external_memory_win32)": [ 6579 { 6580 "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handle-00665", 6581 "text": " <code>handle</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API." 6582 }, 6583 { 6584 "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-00666", 6585 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be one of the handle types defined as opaque." 6586 }, 6587 { 6588 "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter", 6589 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 6590 }, 6591 { 6592 "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter", 6593 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 6594 }, 6595 { 6596 "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-pMemoryWin32HandleProperties-parameter", 6597 "text": " <code>pMemoryWin32HandleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryWin32HandlePropertiesKHR</code> structure" 6598 } 6599 ] 6600 }, 6601 "VkMemoryWin32HandlePropertiesKHR": { 6602 "(VK_KHR_external_memory_win32)": [ 6603 { 6604 "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-sType-sType", 6605 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR</code>" 6606 }, 6607 { 6608 "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-pNext-pNext", 6609 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 6610 } 6611 ] 6612 }, 6613 "VkImportMemoryFdInfoKHR": { 6614 "(VK_KHR_external_memory_fd)": [ 6615 { 6616 "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00667", 6617 "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>." 6618 }, 6619 { 6620 "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-00668", 6621 "text": " The memory from which <code>fd</code> was exported <strong class=\"purple\">must</strong> have been created on the same underlying physical device as <code>device</code>." 6622 }, 6623 { 6624 "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00669", 6625 "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle." 6626 }, 6627 { 6628 "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00670", 6629 "text": " If <code>handleType</code> is not <code>0</code>, <code>fd</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>." 6630 }, 6631 { 6632 "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01746", 6633 "text": " The memory represented by <code>fd</code> <strong class=\"purple\">must</strong> have been created from a physical device and driver that is compatible with <code>device</code> and <code>handleType</code>, as described in <a href=\"#external-memory-handle-types-compatibility\">External memory handle types compatibility</a>." 6634 }, 6635 { 6636 "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01520", 6637 "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>." 6638 }, 6639 { 6640 "vuid": "VUID-VkImportMemoryFdInfoKHR-sType-sType", 6641 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR</code>" 6642 }, 6643 { 6644 "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-parameter", 6645 "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 6646 } 6647 ] 6648 }, 6649 "vkGetMemoryFdKHR": { 6650 "(VK_KHR_external_memory_fd)": [ 6651 { 6652 "vuid": "VUID-vkGetMemoryFdKHR-device-parameter", 6653 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 6654 }, 6655 { 6656 "vuid": "VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter", 6657 "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryGetFdInfoKHR</code> structure" 6658 }, 6659 { 6660 "vuid": "VUID-vkGetMemoryFdKHR-pFd-parameter", 6661 "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>int</code> value" 6662 } 6663 ] 6664 }, 6665 "VkMemoryGetFdInfoKHR": { 6666 "(VK_KHR_external_memory_fd)": [ 6667 { 6668 "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00671", 6669 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created." 6670 }, 6671 { 6672 "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00672", 6673 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle." 6674 }, 6675 { 6676 "vuid": "VUID-VkMemoryGetFdInfoKHR-sType-sType", 6677 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR</code>" 6678 }, 6679 { 6680 "vuid": "VUID-VkMemoryGetFdInfoKHR-pNext-pNext", 6681 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 6682 }, 6683 { 6684 "vuid": "VUID-VkMemoryGetFdInfoKHR-memory-parameter", 6685 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle" 6686 }, 6687 { 6688 "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-parameter", 6689 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 6690 } 6691 ] 6692 }, 6693 "vkGetMemoryFdPropertiesKHR": { 6694 "(VK_KHR_external_memory_fd)": [ 6695 { 6696 "vuid": "VUID-vkGetMemoryFdPropertiesKHR-fd-00673", 6697 "text": " <code>fd</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API." 6698 }, 6699 { 6700 "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-00674", 6701 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>." 6702 }, 6703 { 6704 "vuid": "VUID-vkGetMemoryFdPropertiesKHR-device-parameter", 6705 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 6706 }, 6707 { 6708 "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter", 6709 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 6710 }, 6711 { 6712 "vuid": "VUID-vkGetMemoryFdPropertiesKHR-pMemoryFdProperties-parameter", 6713 "text": " <code>pMemoryFdProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryFdPropertiesKHR</code> structure" 6714 } 6715 ] 6716 }, 6717 "VkMemoryFdPropertiesKHR": { 6718 "(VK_KHR_external_memory_fd)": [ 6719 { 6720 "vuid": "VUID-VkMemoryFdPropertiesKHR-sType-sType", 6721 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR</code>" 6722 }, 6723 { 6724 "vuid": "VUID-VkMemoryFdPropertiesKHR-pNext-pNext", 6725 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 6726 } 6727 ] 6728 }, 6729 "VkImportMemoryHostPointerInfoEXT": { 6730 "(VK_EXT_external_memory_host)": [ 6731 { 6732 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01747", 6733 "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported in <a href=\"#VkExternalMemoryPropertiesKHR\">VkExternalMemoryPropertiesKHR</a>" 6734 }, 6735 { 6736 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01748", 6737 "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>" 6738 }, 6739 { 6740 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749", 6741 "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>" 6742 }, 6743 { 6744 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01750", 6745 "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to <code>allocationSize</code> number of bytes of host memory, where <code>allocationSize</code> is the member of the <code>VkMemoryAllocateInfo</code> structure this structure is chained to" 6746 }, 6747 { 6748 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01751", 6749 "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to <code>allocationSize</code> number of bytes of host mapped foreign memory, where <code>allocationSize</code> is the member of the <code>VkMemoryAllocateInfo</code> structure this structure is chained to" 6750 }, 6751 { 6752 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-sType-sType", 6753 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT</code>" 6754 }, 6755 { 6756 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter", 6757 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 6758 } 6759 ] 6760 }, 6761 "vkGetMemoryHostPointerPropertiesEXT": { 6762 "(VK_EXT_external_memory_host)": [ 6763 { 6764 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01752", 6765 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>" 6766 }, 6767 { 6768 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753", 6769 "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>" 6770 }, 6771 { 6772 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01754", 6773 "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to host memory" 6774 }, 6775 { 6776 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01755", 6777 "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to host mapped foreign memory" 6778 }, 6779 { 6780 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter", 6781 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 6782 }, 6783 { 6784 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter", 6785 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 6786 }, 6787 { 6788 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter", 6789 "text": " <code>pMemoryHostPointerProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryHostPointerPropertiesEXT</code> structure" 6790 } 6791 ] 6792 }, 6793 "VkMemoryHostPointerPropertiesEXT": { 6794 "(VK_EXT_external_memory_host)": [ 6795 { 6796 "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-sType-sType", 6797 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT</code>" 6798 }, 6799 { 6800 "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-pNext-pNext", 6801 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 6802 } 6803 ] 6804 }, 6805 "VkImportAndroidHardwareBufferInfoANDROID": { 6806 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 6807 { 6808 "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01880", 6809 "text": " If <code>buffer</code> is not <code>NULL</code>, Android hardware buffers <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>." 6810 }, 6811 { 6812 "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01881", 6813 "text": " If <code>buffer</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with <code>AHardwareBuffer_Desc</code>::<code>format</code> and <code>AHardwareBuffer_Desc</code>::<code>usage</code> compatible with Vulkan as described in <a href=\"#memory-external-android-hardware-buffer\">Android Hardware Buffers</a>." 6814 }, 6815 { 6816 "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-sType-sType", 6817 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>" 6818 }, 6819 { 6820 "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter", 6821 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>AHardwareBuffer</code> value" 6822 } 6823 ] 6824 }, 6825 "vkGetMemoryAndroidHardwareBufferANDROID": { 6826 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 6827 { 6828 "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter", 6829 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 6830 }, 6831 { 6832 "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter", 6833 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryGetAndroidHardwareBufferInfoANDROID</code> structure" 6834 }, 6835 { 6836 "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pBuffer-parameter", 6837 "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid pointer to a <code>AHardwareBuffer</code> value" 6838 } 6839 ] 6840 }, 6841 "VkMemoryGetAndroidHardwareBufferInfoANDROID": { 6842 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 6843 { 6844 "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-handleTypes-01882", 6845 "text": " <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfoKHR\">VkExportMemoryAllocateInfoKHR</a>::<code>handleTypes</code> when <code>memory</code> was created." 6846 }, 6847 { 6848 "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-01883", 6849 "text": " If the <code>pNext</code> chain of the <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> used to allocate <code>memory</code> included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with non-<code>NULL</code> <code>image</code> member, then that <code>image</code> <strong class=\"purple\">must</strong> already be bound to <code>memory</code>." 6850 }, 6851 { 6852 "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-sType-sType", 6853 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>" 6854 }, 6855 { 6856 "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-pNext", 6857 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 6858 }, 6859 { 6860 "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-memory-parameter", 6861 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle" 6862 } 6863 ] 6864 }, 6865 "vkGetAndroidHardwareBufferPropertiesANDROID": { 6866 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 6867 { 6868 "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884", 6869 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with at least one of the <code>AHARDWAREBUFFER_USAGE_GPU_</code>* flags in its <code>AHardwareBuffer_Desc</code>::<code>usage</code>" 6870 }, 6871 { 6872 "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter", 6873 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 6874 }, 6875 { 6876 "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter", 6877 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>AHardwareBuffer</code> value" 6878 }, 6879 { 6880 "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-pProperties-parameter", 6881 "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkAndroidHardwareBufferPropertiesANDROID</code> structure" 6882 } 6883 ] 6884 }, 6885 "VkAndroidHardwareBufferPropertiesANDROID": { 6886 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 6887 { 6888 "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType", 6889 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID</code>" 6890 }, 6891 { 6892 "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-pNext-pNext", 6893 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a>" 6894 } 6895 ] 6896 }, 6897 "VkAndroidHardwareBufferFormatPropertiesANDROID": { 6898 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 6899 { 6900 "vuid": "VUID-VkAndroidHardwareBufferFormatPropertiesANDROID-sType-sType", 6901 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID</code>" 6902 } 6903 ] 6904 }, 6905 "VkExportMemoryAllocateInfoNV": { 6906 "(VK_NV_external_memory)": [ 6907 { 6908 "vuid": "VUID-VkExportMemoryAllocateInfoNV-sType-sType", 6909 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV</code>" 6910 }, 6911 { 6912 "vuid": "VUID-VkExportMemoryAllocateInfoNV-handleTypes-parameter", 6913 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values" 6914 } 6915 ] 6916 }, 6917 "VkExportMemoryWin32HandleInfoNV": { 6918 "(VK_NV_external_memory_win32)": [ 6919 { 6920 "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-sType-sType", 6921 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>" 6922 }, 6923 { 6924 "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-pAttributes-parameter", 6925 "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value" 6926 } 6927 ] 6928 }, 6929 "VkImportMemoryWin32HandleInfoNV": { 6930 "(VK_NV_external_memory_win32)": [ 6931 { 6932 "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-01327", 6933 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not have more than one bit set." 6934 }, 6935 { 6936 "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handle-01328", 6937 "text": " <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle to memory, obtained as specified by <code>handleType</code>." 6938 }, 6939 { 6940 "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-sType-sType", 6941 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>" 6942 }, 6943 { 6944 "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-parameter", 6945 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values" 6946 } 6947 ] 6948 }, 6949 "vkGetMemoryWin32HandleNV": { 6950 "(VK_NV_external_memory_win32)": [ 6951 { 6952 "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-01326", 6953 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a flag specified in <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a>::<code>handleTypes</code> when allocating <code>memory</code>" 6954 }, 6955 { 6956 "vuid": "VUID-vkGetMemoryWin32HandleNV-device-parameter", 6957 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 6958 }, 6959 { 6960 "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parameter", 6961 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle" 6962 }, 6963 { 6964 "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-parameter", 6965 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values" 6966 }, 6967 { 6968 "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-requiredbitmask", 6969 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 6970 }, 6971 { 6972 "vuid": "VUID-vkGetMemoryWin32HandleNV-pHandle-parameter", 6973 "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value" 6974 }, 6975 { 6976 "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parent", 6977 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 6978 } 6979 ] 6980 }, 6981 "VkMemoryAllocateFlagsInfo": { 6982 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 6983 { 6984 "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00675", 6985 "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask." 6986 }, 6987 { 6988 "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00676", 6989 "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero" 6990 }, 6991 { 6992 "vuid": "VUID-VkMemoryAllocateFlagsInfo-sType-sType", 6993 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO</code>" 6994 }, 6995 { 6996 "vuid": "VUID-VkMemoryAllocateFlagsInfo-flags-parameter", 6997 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMemoryAllocateFlagBits\">VkMemoryAllocateFlagBits</a> values" 6998 } 6999 ] 7000 }, 7001 "vkFreeMemory": { 7002 "core": [ 7003 { 7004 "vuid": "VUID-vkFreeMemory-memory-00677", 7005 "text": " All submitted commands that refer to <code>memory</code> (via images or buffers) <strong class=\"purple\">must</strong> have completed execution" 7006 }, 7007 { 7008 "vuid": "VUID-vkFreeMemory-device-parameter", 7009 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 7010 }, 7011 { 7012 "vuid": "VUID-vkFreeMemory-memory-parameter", 7013 "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle" 7014 }, 7015 { 7016 "vuid": "VUID-vkFreeMemory-pAllocator-parameter", 7017 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 7018 }, 7019 { 7020 "vuid": "VUID-vkFreeMemory-memory-parent", 7021 "text": " If <code>memory</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 7022 } 7023 ] 7024 }, 7025 "vkMapMemory": { 7026 "core": [ 7027 { 7028 "vuid": "VUID-vkMapMemory-memory-00678", 7029 "text": " <code>memory</code> <strong class=\"purple\">must</strong> not be currently host mapped" 7030 }, 7031 { 7032 "vuid": "VUID-vkMapMemory-offset-00679", 7033 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>" 7034 }, 7035 { 7036 "vuid": "VUID-vkMapMemory-size-00680", 7037 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 7038 }, 7039 { 7040 "vuid": "VUID-vkMapMemory-size-00681", 7041 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the <code>memory</code> minus <code>offset</code>" 7042 }, 7043 { 7044 "vuid": "VUID-vkMapMemory-memory-00682", 7045 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT</code>" 7046 }, 7047 { 7048 "vuid": "VUID-vkMapMemory-device-parameter", 7049 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 7050 }, 7051 { 7052 "vuid": "VUID-vkMapMemory-memory-parameter", 7053 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle" 7054 }, 7055 { 7056 "vuid": "VUID-vkMapMemory-flags-zerobitmask", 7057 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 7058 }, 7059 { 7060 "vuid": "VUID-vkMapMemory-ppData-parameter", 7061 "text": " <code>ppData</code> <strong class=\"purple\">must</strong> be a valid pointer to a pointer value" 7062 }, 7063 { 7064 "vuid": "VUID-vkMapMemory-memory-parent", 7065 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 7066 } 7067 ], 7068 "(VK_KHR_device_group)": [ 7069 { 7070 "vuid": "VUID-vkMapMemory-memory-00683", 7071 "text": " <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated with multiple instances." 7072 } 7073 ] 7074 }, 7075 "vkFlushMappedMemoryRanges": { 7076 "core": [ 7077 { 7078 "vuid": "VUID-vkFlushMappedMemoryRanges-device-parameter", 7079 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 7080 }, 7081 { 7082 "vuid": "VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter", 7083 "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <code>VkMappedMemoryRange</code> structures" 7084 }, 7085 { 7086 "vuid": "VUID-vkFlushMappedMemoryRanges-memoryRangeCount-arraylength", 7087 "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 7088 } 7089 ] 7090 }, 7091 "vkInvalidateMappedMemoryRanges": { 7092 "core": [ 7093 { 7094 "vuid": "VUID-vkInvalidateMappedMemoryRanges-device-parameter", 7095 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 7096 }, 7097 { 7098 "vuid": "VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter", 7099 "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <code>VkMappedMemoryRange</code> structures" 7100 }, 7101 { 7102 "vuid": "VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength", 7103 "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 7104 } 7105 ] 7106 }, 7107 "VkMappedMemoryRange": { 7108 "core": [ 7109 { 7110 "vuid": "VUID-VkMappedMemoryRange-memory-00684", 7111 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped" 7112 }, 7113 { 7114 "vuid": "VUID-VkMappedMemoryRange-size-00685", 7115 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>offset</code> and <code>size</code> <strong class=\"purple\">must</strong> specify a range contained within the currently mapped range of <code>memory</code>" 7116 }, 7117 { 7118 "vuid": "VUID-VkMappedMemoryRange-size-00686", 7119 "text": " If <code>size</code> is equal to <code>VK_WHOLE_SIZE</code>, <code>offset</code> <strong class=\"purple\">must</strong> be within the currently mapped range of <code>memory</code>" 7120 }, 7121 { 7122 "vuid": "VUID-VkMappedMemoryRange-size-01389", 7123 "text": " If <code>size</code> is equal to <code>VK_WHOLE_SIZE</code>, the end of the current mapping of <code>memory</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code> bytes from the beginning of the memory object." 7124 }, 7125 { 7126 "vuid": "VUID-VkMappedMemoryRange-offset-00687", 7127 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>" 7128 }, 7129 { 7130 "vuid": "VUID-VkMappedMemoryRange-size-01390", 7131 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> either be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>, or <code>offset</code> plus <code>size</code> <strong class=\"purple\">must</strong> equal the size of <code>memory</code>." 7132 }, 7133 { 7134 "vuid": "VUID-VkMappedMemoryRange-sType-sType", 7135 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE</code>" 7136 }, 7137 { 7138 "vuid": "VUID-VkMappedMemoryRange-pNext-pNext", 7139 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 7140 }, 7141 { 7142 "vuid": "VUID-VkMappedMemoryRange-memory-parameter", 7143 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle" 7144 } 7145 ] 7146 }, 7147 "vkUnmapMemory": { 7148 "core": [ 7149 { 7150 "vuid": "VUID-vkUnmapMemory-memory-00689", 7151 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped" 7152 }, 7153 { 7154 "vuid": "VUID-vkUnmapMemory-device-parameter", 7155 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 7156 }, 7157 { 7158 "vuid": "VUID-vkUnmapMemory-memory-parameter", 7159 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle" 7160 }, 7161 { 7162 "vuid": "VUID-vkUnmapMemory-memory-parent", 7163 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 7164 } 7165 ] 7166 }, 7167 "vkGetDeviceMemoryCommitment": { 7168 "core": [ 7169 { 7170 "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-00690", 7171 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT</code>" 7172 }, 7173 { 7174 "vuid": "VUID-vkGetDeviceMemoryCommitment-device-parameter", 7175 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 7176 }, 7177 { 7178 "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parameter", 7179 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle" 7180 }, 7181 { 7182 "vuid": "VUID-vkGetDeviceMemoryCommitment-pCommittedMemoryInBytes-parameter", 7183 "text": " <code>pCommittedMemoryInBytes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceSize</code> value" 7184 }, 7185 { 7186 "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parent", 7187 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 7188 } 7189 ] 7190 }, 7191 "vkGetDeviceGroupPeerMemoryFeatures": { 7192 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 7193 { 7194 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-heapIndex-00691", 7195 "text": " <code>heapIndex</code> <strong class=\"purple\">must</strong> be less than <code>memoryHeapCount</code>" 7196 }, 7197 { 7198 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00692", 7199 "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index" 7200 }, 7201 { 7202 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-remoteDeviceIndex-00693", 7203 "text": " <code>remoteDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index" 7204 }, 7205 { 7206 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00694", 7207 "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> not equal <code>remoteDeviceIndex</code>" 7208 }, 7209 { 7210 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter", 7211 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 7212 }, 7213 { 7214 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-parameter", 7215 "text": " <code>pPeerMemoryFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPeerMemoryFeatureFlags\">VkPeerMemoryFeatureFlags</a> value" 7216 } 7217 ] 7218 }, 7219 "vkCreateBuffer": { 7220 "core": [ 7221 { 7222 "vuid": "VUID-vkCreateBuffer-flags-00911", 7223 "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkBuffer</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>" 7224 }, 7225 { 7226 "vuid": "VUID-vkCreateBuffer-device-parameter", 7227 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 7228 }, 7229 { 7230 "vuid": "VUID-vkCreateBuffer-pCreateInfo-parameter", 7231 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferCreateInfo</code> structure" 7232 }, 7233 { 7234 "vuid": "VUID-vkCreateBuffer-pAllocator-parameter", 7235 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 7236 }, 7237 { 7238 "vuid": "VUID-vkCreateBuffer-pBuffer-parameter", 7239 "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBuffer</code> handle" 7240 } 7241 ] 7242 }, 7243 "VkBufferCreateInfo": { 7244 "core": [ 7245 { 7246 "vuid": "VUID-VkBufferCreateInfo-size-00912", 7247 "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 7248 }, 7249 { 7250 "vuid": "VUID-VkBufferCreateInfo-sharingMode-00913", 7251 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values" 7252 }, 7253 { 7254 "vuid": "VUID-VkBufferCreateInfo-sharingMode-00914", 7255 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>" 7256 }, 7257 { 7258 "vuid": "VUID-VkBufferCreateInfo-flags-00915", 7259 "text": " If the <a href=\"#features-sparseBinding\">sparse bindings</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>" 7260 }, 7261 { 7262 "vuid": "VUID-VkBufferCreateInfo-flags-00916", 7263 "text": " If the <a href=\"#features-sparseResidencyBuffer\">sparse buffer residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>" 7264 }, 7265 { 7266 "vuid": "VUID-VkBufferCreateInfo-flags-00917", 7267 "text": " If the <a href=\"#features-sparseResidencyAliased\">sparse aliased residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>" 7268 }, 7269 { 7270 "vuid": "VUID-VkBufferCreateInfo-flags-00918", 7271 "text": " If <code>flags</code> contains <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>" 7272 }, 7273 { 7274 "vuid": "VUID-VkBufferCreateInfo-sType-sType", 7275 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO</code>" 7276 }, 7277 { 7278 "vuid": "VUID-VkBufferCreateInfo-pNext-pNext", 7279 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>, <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>, or <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>" 7280 }, 7281 { 7282 "vuid": "VUID-VkBufferCreateInfo-sType-unique", 7283 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 7284 }, 7285 { 7286 "vuid": "VUID-VkBufferCreateInfo-flags-parameter", 7287 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values" 7288 }, 7289 { 7290 "vuid": "VUID-VkBufferCreateInfo-usage-parameter", 7291 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values" 7292 }, 7293 { 7294 "vuid": "VUID-VkBufferCreateInfo-usage-requiredbitmask", 7295 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 7296 }, 7297 { 7298 "vuid": "VUID-VkBufferCreateInfo-sharingMode-parameter", 7299 "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value" 7300 } 7301 ], 7302 "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 7303 { 7304 "vuid": "VUID-VkBufferCreateInfo-sharingMode-01391", 7305 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>" 7306 } 7307 ], 7308 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 7309 { 7310 "vuid": "VUID-VkBufferCreateInfo-sharingMode-01419", 7311 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>" 7312 } 7313 ], 7314 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 7315 { 7316 "vuid": "VUID-VkBufferCreateInfo-pNext-00920", 7317 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalBufferProperties\">vkGetPhysicalDeviceExternalBufferProperties</a> with <code>pExternalBufferInfo</code>-><code>handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code>" 7318 } 7319 ], 7320 "(VK_VERSION_1_1)": [ 7321 { 7322 "vuid": "VUID-VkBufferCreateInfo-flags-01887", 7323 "text": " If the protected memory feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_PROTECTED_BIT</code>" 7324 }, 7325 { 7326 "vuid": "VUID-VkBufferCreateInfo-None-01888", 7327 "text": " If any of the bits <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> <strong class=\"purple\">must</strong> not also be set" 7328 } 7329 ], 7330 "(VK_NV_dedicated_allocation)": [ 7331 { 7332 "vuid": "VUID-VkBufferCreateInfo-pNext-01571", 7333 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>, and the <code>dedicatedAllocation</code> member of the chained structure is <code>VK_TRUE</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>" 7334 } 7335 ], 7336 "(VK_EXT_buffer_device_address)": [ 7337 { 7338 "vuid": "VUID-VkBufferCreateInfo-deviceAddress-02604", 7339 "text": " If <a href=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>::<code>deviceAddress</code> is not zero, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT</code>" 7340 }, 7341 { 7342 "vuid": "VUID-VkBufferCreateInfo-flags-02605", 7343 "text": " If <code>flags</code> includes <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT</code>, the <a href=\"#features-bufferDeviceAddressCaptureReplay\">bufferDeviceAddressCaptureReplay</a> feature <strong class=\"purple\">must</strong> be enabled" 7344 }, 7345 { 7346 "vuid": "VUID-VkBufferCreateInfo-usage-02606", 7347 "text": " If <code>usage</code> includes <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT</code>, the <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled" 7348 } 7349 ] 7350 }, 7351 "VkDedicatedAllocationBufferCreateInfoNV": { 7352 "(VK_NV_dedicated_allocation)": [ 7353 { 7354 "vuid": "VUID-VkDedicatedAllocationBufferCreateInfoNV-sType-sType", 7355 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV</code>" 7356 } 7357 ] 7358 }, 7359 "VkExternalMemoryBufferCreateInfo": { 7360 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 7361 { 7362 "vuid": "VUID-VkExternalMemoryBufferCreateInfo-sType-sType", 7363 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO</code>" 7364 }, 7365 { 7366 "vuid": "VUID-VkExternalMemoryBufferCreateInfo-handleTypes-parameter", 7367 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values" 7368 } 7369 ] 7370 }, 7371 "VkBufferDeviceAddressCreateInfoEXT": { 7372 "(VK_EXT_buffer_device_address)": [ 7373 { 7374 "vuid": "VUID-VkBufferDeviceAddressCreateInfoEXT-sType-sType", 7375 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT</code>" 7376 } 7377 ] 7378 }, 7379 "vkDestroyBuffer": { 7380 "core": [ 7381 { 7382 "vuid": "VUID-vkDestroyBuffer-buffer-00922", 7383 "text": " All submitted commands that refer to <code>buffer</code>, either directly or via a <code>VkBufferView</code>, <strong class=\"purple\">must</strong> have completed execution" 7384 }, 7385 { 7386 "vuid": "VUID-vkDestroyBuffer-buffer-00923", 7387 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 7388 }, 7389 { 7390 "vuid": "VUID-vkDestroyBuffer-buffer-00924", 7391 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 7392 }, 7393 { 7394 "vuid": "VUID-vkDestroyBuffer-device-parameter", 7395 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 7396 }, 7397 { 7398 "vuid": "VUID-vkDestroyBuffer-buffer-parameter", 7399 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 7400 }, 7401 { 7402 "vuid": "VUID-vkDestroyBuffer-pAllocator-parameter", 7403 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 7404 }, 7405 { 7406 "vuid": "VUID-vkDestroyBuffer-buffer-parent", 7407 "text": " If <code>buffer</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 7408 } 7409 ] 7410 }, 7411 "vkCreateBufferView": { 7412 "core": [ 7413 { 7414 "vuid": "VUID-vkCreateBufferView-device-parameter", 7415 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 7416 }, 7417 { 7418 "vuid": "VUID-vkCreateBufferView-pCreateInfo-parameter", 7419 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferViewCreateInfo</code> structure" 7420 }, 7421 { 7422 "vuid": "VUID-vkCreateBufferView-pAllocator-parameter", 7423 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 7424 }, 7425 { 7426 "vuid": "VUID-vkCreateBufferView-pView-parameter", 7427 "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBufferView</code> handle" 7428 } 7429 ] 7430 }, 7431 "VkBufferViewCreateInfo": { 7432 "core": [ 7433 { 7434 "vuid": "VUID-VkBufferViewCreateInfo-offset-00925", 7435 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>" 7436 }, 7437 { 7438 "vuid": "VUID-VkBufferViewCreateInfo-offset-00926", 7439 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>" 7440 }, 7441 { 7442 "vuid": "VUID-VkBufferViewCreateInfo-range-00928", 7443 "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 7444 }, 7445 { 7446 "vuid": "VUID-VkBufferViewCreateInfo-range-00929", 7447 "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be an integer multiple of the texel block size of <code>format</code>" 7448 }, 7449 { 7450 "vuid": "VUID-VkBufferViewCreateInfo-range-00930", 7451 "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> divided by the texel block size of <code>format</code>, multiplied by the number of texels per texel block for that format (as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table), <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>" 7452 }, 7453 { 7454 "vuid": "VUID-VkBufferViewCreateInfo-offset-00931", 7455 "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, the sum of <code>offset</code> and <code>range</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 7456 }, 7457 { 7458 "vuid": "VUID-VkBufferViewCreateInfo-buffer-00932", 7459 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code> or <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>" 7460 }, 7461 { 7462 "vuid": "VUID-VkBufferViewCreateInfo-buffer-00933", 7463 "text": " If <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for uniform texel buffers, as specified by the <code>VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>" 7464 }, 7465 { 7466 "vuid": "VUID-VkBufferViewCreateInfo-buffer-00934", 7467 "text": " If <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for storage texel buffers, as specified by the <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>" 7468 }, 7469 { 7470 "vuid": "VUID-VkBufferViewCreateInfo-buffer-00935", 7471 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 7472 }, 7473 { 7474 "vuid": "VUID-VkBufferViewCreateInfo-sType-sType", 7475 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO</code>" 7476 }, 7477 { 7478 "vuid": "VUID-VkBufferViewCreateInfo-pNext-pNext", 7479 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 7480 }, 7481 { 7482 "vuid": "VUID-VkBufferViewCreateInfo-flags-zerobitmask", 7483 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 7484 }, 7485 { 7486 "vuid": "VUID-VkBufferViewCreateInfo-buffer-parameter", 7487 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 7488 }, 7489 { 7490 "vuid": "VUID-VkBufferViewCreateInfo-format-parameter", 7491 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 7492 } 7493 ] 7494 }, 7495 "vkDestroyBufferView": { 7496 "core": [ 7497 { 7498 "vuid": "VUID-vkDestroyBufferView-bufferView-00936", 7499 "text": " All submitted commands that refer to <code>bufferView</code> <strong class=\"purple\">must</strong> have completed execution" 7500 }, 7501 { 7502 "vuid": "VUID-vkDestroyBufferView-bufferView-00937", 7503 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 7504 }, 7505 { 7506 "vuid": "VUID-vkDestroyBufferView-bufferView-00938", 7507 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 7508 }, 7509 { 7510 "vuid": "VUID-vkDestroyBufferView-device-parameter", 7511 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 7512 }, 7513 { 7514 "vuid": "VUID-vkDestroyBufferView-bufferView-parameter", 7515 "text": " If <code>bufferView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>bufferView</code> <strong class=\"purple\">must</strong> be a valid <code>VkBufferView</code> handle" 7516 }, 7517 { 7518 "vuid": "VUID-vkDestroyBufferView-pAllocator-parameter", 7519 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 7520 }, 7521 { 7522 "vuid": "VUID-vkDestroyBufferView-bufferView-parent", 7523 "text": " If <code>bufferView</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 7524 } 7525 ] 7526 }, 7527 "vkCreateImage": { 7528 "core": [ 7529 { 7530 "vuid": "VUID-vkCreateImage-flags-00939", 7531 "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkImage</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>" 7532 }, 7533 { 7534 "vuid": "VUID-vkCreateImage-device-parameter", 7535 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 7536 }, 7537 { 7538 "vuid": "VUID-vkCreateImage-pCreateInfo-parameter", 7539 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageCreateInfo</code> structure" 7540 }, 7541 { 7542 "vuid": "VUID-vkCreateImage-pAllocator-parameter", 7543 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 7544 }, 7545 { 7546 "vuid": "VUID-vkCreateImage-pImage-parameter", 7547 "text": " <code>pImage</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImage</code> handle" 7548 } 7549 ] 7550 }, 7551 "VkImageCreateInfo": { 7552 "core": [ 7553 { 7554 "vuid": "VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251", 7555 "text": " Each of the following values (as described in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) <strong class=\"purple\">must</strong> not be undefined <code>imageCreateMaxMipLevels</code>, <code>imageCreateMaxArrayLayers</code>, <code>imageCreateMaxExtent</code>, and <code>imageCreateSampleCounts</code>." 7556 }, 7557 { 7558 "vuid": "VUID-VkImageCreateInfo-sharingMode-00941", 7559 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values" 7560 }, 7561 { 7562 "vuid": "VUID-VkImageCreateInfo-sharingMode-00942", 7563 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>" 7564 }, 7565 { 7566 "vuid": "VUID-VkImageCreateInfo-extent-00944", 7567 "text": " <code>extent</code>::<code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>." 7568 }, 7569 { 7570 "vuid": "VUID-VkImageCreateInfo-extent-00945", 7571 "text": " <code>extent</code>::<code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>." 7572 }, 7573 { 7574 "vuid": "VUID-VkImageCreateInfo-extent-00946", 7575 "text": " <code>extent</code>::<code>depth</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>." 7576 }, 7577 { 7578 "vuid": "VUID-VkImageCreateInfo-mipLevels-00947", 7579 "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 7580 }, 7581 { 7582 "vuid": "VUID-VkImageCreateInfo-arrayLayers-00948", 7583 "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 7584 }, 7585 { 7586 "vuid": "VUID-VkImageCreateInfo-flags-00949", 7587 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>" 7588 }, 7589 { 7590 "vuid": "VUID-VkImageCreateInfo-extent-02252", 7591 "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.width</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)." 7592 }, 7593 { 7594 "vuid": "VUID-VkImageCreateInfo-extent-02253", 7595 "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.height</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)." 7596 }, 7597 { 7598 "vuid": "VUID-VkImageCreateInfo-extent-02254", 7599 "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.depth</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)." 7600 }, 7601 { 7602 "vuid": "VUID-VkImageCreateInfo-imageType-00954", 7603 "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>extent.width</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be equal and <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than or equal to 6" 7604 }, 7605 { 7606 "vuid": "VUID-VkImageCreateInfo-imageType-00956", 7607 "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_1D</code>, both <code>extent.height</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 7608 }, 7609 { 7610 "vuid": "VUID-VkImageCreateInfo-imageType-00957", 7611 "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 7612 }, 7613 { 7614 "vuid": "VUID-VkImageCreateInfo-mipLevels-00958", 7615 "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to the number of levels in the complete mipmap chain based on <span class=\"eq\"><code>extent.width</code></span>, <span class=\"eq\"><code>extent.height</code></span>, and <span class=\"eq\"><code>extent.depth</code></span>." 7616 }, 7617 { 7618 "vuid": "VUID-VkImageCreateInfo-mipLevels-02255", 7619 "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxMipLevels</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)." 7620 }, 7621 { 7622 "vuid": "VUID-VkImageCreateInfo-arrayLayers-02256", 7623 "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxArrayLayers</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)." 7624 }, 7625 { 7626 "vuid": "VUID-VkImageCreateInfo-imageType-00961", 7627 "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be <code>1</code>." 7628 }, 7629 { 7630 "vuid": "VUID-VkImageCreateInfo-samples-02257", 7631 "text": " If <code>samples</code> is not <code>VK_SAMPLE_COUNT_1_BIT</code>, then <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>mipLevels</code> <strong class=\"purple\">must</strong> be equal to <code>1</code>, and <code>imageCreateMaybeLinear</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) <strong class=\"purple\">must</strong> be <code>false</code>," 7632 }, 7633 { 7634 "vuid": "VUID-VkImageCreateInfo-usage-00963", 7635 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, then bits other than <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not be set" 7636 }, 7637 { 7638 "vuid": "VUID-VkImageCreateInfo-usage-00964", 7639 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>" 7640 }, 7641 { 7642 "vuid": "VUID-VkImageCreateInfo-usage-00965", 7643 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>" 7644 }, 7645 { 7646 "vuid": "VUID-VkImageCreateInfo-usage-00966", 7647 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, <code>usage</code> <strong class=\"purple\">must</strong> also contain at least one of <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>." 7648 }, 7649 { 7650 "vuid": "VUID-VkImageCreateInfo-samples-02258", 7651 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>imageCreateSampleCounts</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)." 7652 }, 7653 { 7654 "vuid": "VUID-VkImageCreateInfo-usage-00968", 7655 "text": " If the <a href=\"#features-shaderStorageImageMultisample\">multisampled storage images</a> feature is not enabled, and <code>usage</code> contains <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>" 7656 }, 7657 { 7658 "vuid": "VUID-VkImageCreateInfo-flags-00969", 7659 "text": " If the <a href=\"#features-sparseBinding\">sparse bindings</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>" 7660 }, 7661 { 7662 "vuid": "VUID-VkImageCreateInfo-flags-01924", 7663 "text": " If the <a href=\"#features-sparseResidencyAliased\">sparse aliased residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>" 7664 }, 7665 { 7666 "vuid": "VUID-VkImageCreateInfo-imageType-00970", 7667 "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_1D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" 7668 }, 7669 { 7670 "vuid": "VUID-VkImageCreateInfo-imageType-00971", 7671 "text": " If the <a href=\"#features-sparseResidencyImage2D\">sparse residency for 2D images</a> feature is not enabled, and <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" 7672 }, 7673 { 7674 "vuid": "VUID-VkImageCreateInfo-imageType-00972", 7675 "text": " If the <a href=\"#features-sparseResidencyImage3D\">sparse residency for 3D images</a> feature is not enabled, and <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" 7676 }, 7677 { 7678 "vuid": "VUID-VkImageCreateInfo-imageType-00973", 7679 "text": " If the <a href=\"#features-sparseResidency2Samples\">sparse residency for images with 2 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_2_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" 7680 }, 7681 { 7682 "vuid": "VUID-VkImageCreateInfo-imageType-00974", 7683 "text": " If the <a href=\"#features-sparseResidency4Samples\">sparse residency for images with 4 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_4_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" 7684 }, 7685 { 7686 "vuid": "VUID-VkImageCreateInfo-imageType-00975", 7687 "text": " If the <a href=\"#features-sparseResidency8Samples\">sparse residency for images with 8 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_8_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" 7688 }, 7689 { 7690 "vuid": "VUID-VkImageCreateInfo-imageType-00976", 7691 "text": " If the <a href=\"#features-sparseResidency16Samples\">sparse residency for images with 16 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_16_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" 7692 }, 7693 { 7694 "vuid": "VUID-VkImageCreateInfo-flags-00987", 7695 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>" 7696 }, 7697 { 7698 "vuid": "VUID-VkImageCreateInfo-None-01925", 7699 "text": " If any of the bits <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not also be set" 7700 }, 7701 { 7702 "vuid": "VUID-VkImageCreateInfo-initialLayout-00993", 7703 "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>." 7704 }, 7705 { 7706 "vuid": "VUID-VkImageCreateInfo-sType-sType", 7707 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO</code>" 7708 }, 7709 { 7710 "vuid": "VUID-VkImageCreateInfo-pNext-pNext", 7711 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>, <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>, <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a>, <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a>, <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a>, <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, or <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>" 7712 }, 7713 { 7714 "vuid": "VUID-VkImageCreateInfo-sType-unique", 7715 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 7716 }, 7717 { 7718 "vuid": "VUID-VkImageCreateInfo-flags-parameter", 7719 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values" 7720 }, 7721 { 7722 "vuid": "VUID-VkImageCreateInfo-imageType-parameter", 7723 "text": " <code>imageType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value" 7724 }, 7725 { 7726 "vuid": "VUID-VkImageCreateInfo-format-parameter", 7727 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 7728 }, 7729 { 7730 "vuid": "VUID-VkImageCreateInfo-samples-parameter", 7731 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 7732 }, 7733 { 7734 "vuid": "VUID-VkImageCreateInfo-tiling-parameter", 7735 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value" 7736 }, 7737 { 7738 "vuid": "VUID-VkImageCreateInfo-usage-parameter", 7739 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 7740 }, 7741 { 7742 "vuid": "VUID-VkImageCreateInfo-usage-requiredbitmask", 7743 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 7744 }, 7745 { 7746 "vuid": "VUID-VkImageCreateInfo-sharingMode-parameter", 7747 "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value" 7748 }, 7749 { 7750 "vuid": "VUID-VkImageCreateInfo-initialLayout-parameter", 7751 "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 7752 } 7753 ], 7754 "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 7755 { 7756 "vuid": "VUID-VkImageCreateInfo-sharingMode-01392", 7757 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>" 7758 } 7759 ], 7760 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 7761 { 7762 "vuid": "VUID-VkImageCreateInfo-sharingMode-01420", 7763 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>" 7764 } 7765 ], 7766 "!(VK_ANDROID_external_memory_android_hardware_buffer)": [ 7767 { 7768 "vuid": "VUID-VkImageCreateInfo-format-00943", 7769 "text": " <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>" 7770 } 7771 ], 7772 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 7773 { 7774 "vuid": "VUID-VkImageCreateInfo-pNext-01974", 7775 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, and its member <code>externalFormat</code> is non-zero the <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>." 7776 }, 7777 { 7778 "vuid": "VUID-VkImageCreateInfo-pNext-01975", 7779 "text": " If the <code>pNext</code> chain does not contain an instance of <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, or does and its member <code>externalFormat</code> is <code>0</code> the <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>." 7780 }, 7781 { 7782 "vuid": "VUID-VkImageCreateInfo-pNext-02393", 7783 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure whose <code>handleTypes</code> member includes <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>." 7784 }, 7785 { 7786 "vuid": "VUID-VkImageCreateInfo-pNext-02394", 7787 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure whose <code>handleTypes</code> member includes <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>mipLevels</code> <strong class=\"purple\">must</strong> either be <code>1</code> or equal to the number of levels in the complete mipmap chain based on <span class=\"eq\"><code>extent.width</code></span>, <span class=\"eq\"><code>extent.height</code></span>, and <span class=\"eq\"><code>extent.depth</code></span>." 7788 }, 7789 { 7790 "vuid": "VUID-VkImageCreateInfo-pNext-02396", 7791 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>." 7792 }, 7793 { 7794 "vuid": "VUID-VkImageCreateInfo-pNext-02397", 7795 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>, <code>usage</code> <strong class=\"purple\">must</strong> not include any usages except <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>." 7796 }, 7797 { 7798 "vuid": "VUID-VkImageCreateInfo-pNext-02398", 7799 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>, <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_OPTIMAL</code>." 7800 } 7801 ], 7802 "(VK_EXT_fragment_density_map)": [ 7803 { 7804 "vuid": "VUID-VkImageCreateInfo-flags-02557", 7805 "text": " If <code>flags</code> contains <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>" 7806 }, 7807 { 7808 "vuid": "VUID-VkImageCreateInfo-samples-02558", 7809 "text": " If <code>samples</code> is not <code>VK_SAMPLE_COUNT_1_BIT</code>, <code>usage</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>" 7810 }, 7811 { 7812 "vuid": "VUID-VkImageCreateInfo-usage-02559", 7813 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to \\(\\lceil{\\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\\rceil\\)" 7814 }, 7815 { 7816 "vuid": "VUID-VkImageCreateInfo-usage-02560", 7817 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to \\(\\lceil{\\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\\rceil\\)" 7818 }, 7819 { 7820 "vuid": "VUID-VkImageCreateInfo-flags-02565", 7821 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_OPTIMAL</code>" 7822 }, 7823 { 7824 "vuid": "VUID-VkImageCreateInfo-flags-02566", 7825 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>" 7826 }, 7827 { 7828 "vuid": "VUID-VkImageCreateInfo-flags-02567", 7829 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>" 7830 }, 7831 { 7832 "vuid": "VUID-VkImageCreateInfo-flags-02568", 7833 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>mipLevels</code> <strong class=\"purple\">must</strong> be <code>1</code>" 7834 } 7835 ], 7836 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 7837 { 7838 "vuid": "VUID-VkImageCreateInfo-flags-00950", 7839 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_3D</code>" 7840 } 7841 ], 7842 "(VK_VERSION_1_1)": [ 7843 { 7844 "vuid": "VUID-VkImageCreateInfo-flags-01890", 7845 "text": " If the protected memory feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_PROTECTED_BIT</code>." 7846 }, 7847 { 7848 "vuid": "VUID-VkImageCreateInfo-None-01891", 7849 "text": " If any of the bits <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> <strong class=\"purple\">must</strong> not also be set." 7850 } 7851 ], 7852 "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_NV_external_memory)": [ 7853 { 7854 "vuid": "VUID-VkImageCreateInfo-pNext-00988", 7855 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, it <strong class=\"purple\">must</strong> not contain an instance of <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>." 7856 } 7857 ], 7858 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 7859 { 7860 "vuid": "VUID-VkImageCreateInfo-pNext-00990", 7861 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure, and with an instance of <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> in the <code>pNext</code> chain, with a <code>handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code>" 7862 } 7863 ], 7864 "(VK_NV_external_memory+VK_NV_external_memory_capabilities)": [ 7865 { 7866 "vuid": "VUID-VkImageCreateInfo-pNext-00991", 7867 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalImageFormatPropertiesNV\">VkExternalImageFormatPropertiesNV</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalImageFormatPropertiesNV\">vkGetPhysicalDeviceExternalImageFormatPropertiesNV</a> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure, and with <code>externalHandleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>::<code>handleTypes</code>" 7868 } 7869 ], 7870 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 7871 { 7872 "vuid": "VUID-VkImageCreateInfo-physicalDeviceCount-01421", 7873 "text": " If the logical device was created with <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>::<code>physicalDeviceCount</code> equal to 1, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code>" 7874 }, 7875 { 7876 "vuid": "VUID-VkImageCreateInfo-flags-02259", 7877 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code>, then <code>mipLevels</code> <strong class=\"purple\">must</strong> be one, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be one, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>. and <code>imageCreateMaybeLinear</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) <strong class=\"purple\">must</strong> be <code>false</code>." 7878 } 7879 ], 7880 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 7881 { 7882 "vuid": "VUID-VkImageCreateInfo-flags-01572", 7883 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code>, then <code>format</code> <strong class=\"purple\">must</strong> be a <a href=\"#appendix-compressedtex-bc\">block-compressed image format</a>, an <a href=\"#appendix-compressedtex-etc2\">ETC compressed image format</a>, or an <a href=\"#appendix-compressedtex-astc\">ASTC compressed image format</a>." 7884 }, 7885 { 7886 "vuid": "VUID-VkImageCreateInfo-flags-01573", 7887 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code>, then <code>flags</code> <strong class=\"purple\">must</strong> also contain <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>." 7888 } 7889 ], 7890 "(VK_VERSION_1_1,VK_KHR_external_memory,VK_NV_external_memory)": [ 7891 { 7892 "vuid": "VUID-VkImageCreateInfo-pNext-01443", 7893 "text": " If the <code>pNext</code> chain includes a ifdef::VK_VERSION_1_1,VK_KHR_external_memory[<a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>]" 7894 } 7895 ], 7896 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 7897 { 7898 "vuid": "VUID-VkImageCreateInfo-format-02561", 7899 "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y’C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, then <code>mipLevels</code> <strong class=\"purple\">must</strong> be 1" 7900 }, 7901 { 7902 "vuid": "VUID-VkImageCreateInfo-format-02562", 7903 "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y’C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>samples</code> must be <code>VK_SAMPLE_COUNT_1_BIT</code>" 7904 }, 7905 { 7906 "vuid": "VUID-VkImageCreateInfo-format-02563", 7907 "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y’C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>" 7908 }, 7909 { 7910 "vuid": "VUID-VkImageCreateInfo-imageCreateFormatFeatures-02260", 7911 "text": " If <code>format</code> is a <em>multi-planar</em> format, and if <code>imageCreateFormatFeatures</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) does not contain <code>VK_FORMAT_FEATURE_DISJOINT_BIT</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_DISJOINT_BIT</code>." 7912 }, 7913 { 7914 "vuid": "VUID-VkImageCreateInfo-format-01577", 7915 "text": " If <code>format</code> is not a <em>multi-planar</em> format, and <code>flags</code> does not include <code>VK_IMAGE_CREATE_ALIAS_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_DISJOINT_BIT</code>" 7916 } 7917 ], 7918 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_ycbcr_image_arrays)": [ 7919 { 7920 "vuid": "VUID-VkImageCreateInfo-format-02653", 7921 "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y’C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, and the <code>ycbcrImageArrays</code> feature is not enabled, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be 1" 7922 } 7923 ], 7924 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_ycbcr_image_arrays)": [ 7925 { 7926 "vuid": "VUID-VkImageCreateInfo-format-02564", 7927 "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y’C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be 1" 7928 } 7929 ], 7930 "(VK_EXT_image_drm_format_modifier)": [ 7931 { 7932 "vuid": "VUID-VkImageCreateInfo-tiling-02261", 7933 "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain exactly one of <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a> or <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a>." 7934 }, 7935 { 7936 "vuid": "VUID-VkImageCreateInfo-pNext-02262", 7937 "text": " If the <code>pNext</code> chain contains <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a> or <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a>, then <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>." 7938 }, 7939 { 7940 "vuid": "VUID-VkImageCreateInfo-tiling-02353", 7941 "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a> with non-zero <code>viewFormatCount</code>." 7942 } 7943 ], 7944 "(VK_EXT_sample_locations)": [ 7945 { 7946 "vuid": "VUID-VkImageCreateInfo-flags-01533", 7947 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> <code>format</code> <strong class=\"purple\">must</strong> be a depth or depth/stencil format" 7948 } 7949 ], 7950 "(VK_EXT_separate_stencil_usage)": [ 7951 { 7952 "vuid": "VUID-VkImageCreateInfo-format-02534", 7953 "text": " If <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, then its <code>stencilUsage</code> member <strong class=\"purple\">must</strong> only include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> if <code>usage</code> also includes it" 7954 }, 7955 { 7956 "vuid": "VUID-VkImageCreateInfo-format-02535", 7957 "text": " If <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, then its <code>stencilUsage</code> member <strong class=\"purple\">must</strong> only include <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code> if <code>usage</code> also includes it" 7958 }, 7959 { 7960 "vuid": "VUID-VkImageCreateInfo-Format-02536", 7961 "text": " If <code>Format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> with its <code>stencilUsage</code> member including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>" 7962 }, 7963 { 7964 "vuid": "VUID-VkImageCreateInfo-format-02537", 7965 "text": " If <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> with its <code>stencilUsage</code> member including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>" 7966 }, 7967 { 7968 "vuid": "VUID-VkImageCreateInfo-format-02538", 7969 "text": " If the <a href=\"#features-shaderStorageImageMultisample\">multisampled storage images</a> feature is not enabled, <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> with its <code>stencilUsage</code> including <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>" 7970 } 7971 ], 7972 "(VK_NV_corner_sampled_image)": [ 7973 { 7974 "vuid": "VUID-VkImageCreateInfo-flags-02050", 7975 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code> or <code>VK_IMAGE_TYPE_3D</code>" 7976 }, 7977 { 7978 "vuid": "VUID-VkImageCreateInfo-flags-02051", 7979 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code>, it <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code> and the <code>format</code> <strong class=\"purple\">must</strong> not be a depth/stencil format" 7980 }, 7981 { 7982 "vuid": "VUID-VkImageCreateInfo-flags-02052", 7983 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> and <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>extent</code>::<code>width</code> and <code>extent</code>::<code>height</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>" 7984 }, 7985 { 7986 "vuid": "VUID-VkImageCreateInfo-flags-02053", 7987 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> and <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>extent</code>::<code>width</code>, <code>extent</code>::<code>height</code>, and <code>extent</code>::<code>depth</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>" 7988 } 7989 ], 7990 "(VK_NV_shading_rate_image)": [ 7991 { 7992 "vuid": "VUID-VkImageCreateInfo-imageType-02082", 7993 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>." 7994 }, 7995 { 7996 "vuid": "VUID-VkImageCreateInfo-samples-02083", 7997 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>." 7998 }, 7999 { 8000 "vuid": "VUID-VkImageCreateInfo-tiling-02084", 8001 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_OPTIMAL</code>." 8002 } 8003 ] 8004 }, 8005 "VkImageStencilUsageCreateInfoEXT": { 8006 "(VK_EXT_separate_stencil_usage)": [ 8007 { 8008 "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-02539", 8009 "text": " If <code>stencilUsage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, then bits other than <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not be set" 8010 }, 8011 { 8012 "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-sType-sType", 8013 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT</code>" 8014 }, 8015 { 8016 "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-parameter", 8017 "text": " <code>stencilUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 8018 }, 8019 { 8020 "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-requiredbitmask", 8021 "text": " <code>stencilUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 8022 } 8023 ] 8024 }, 8025 "VkDedicatedAllocationImageCreateInfoNV": { 8026 "(VK_NV_dedicated_allocation)": [ 8027 { 8028 "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-dedicatedAllocation-00994", 8029 "text": " If <code>dedicatedAllocation</code> is <code>VK_TRUE</code>, <code>VkImageCreateInfo</code>::<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>" 8030 }, 8031 { 8032 "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-sType-sType", 8033 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV</code>" 8034 } 8035 ] 8036 }, 8037 "VkExternalMemoryImageCreateInfo": { 8038 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 8039 { 8040 "vuid": "VUID-VkExternalMemoryImageCreateInfo-sType-sType", 8041 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO</code>" 8042 }, 8043 { 8044 "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-parameter", 8045 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values" 8046 }, 8047 { 8048 "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-requiredbitmask", 8049 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 8050 } 8051 ] 8052 }, 8053 "VkExternalMemoryImageCreateInfoNV": { 8054 "(VK_NV_external_memory)": [ 8055 { 8056 "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-sType-sType", 8057 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV</code>" 8058 }, 8059 { 8060 "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-handleTypes-parameter", 8061 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values" 8062 } 8063 ] 8064 }, 8065 "VkExternalFormatANDROID": { 8066 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 8067 { 8068 "vuid": "VUID-VkExternalFormatANDROID-externalFormat-01894", 8069 "text": " <code>externalFormat</code> <strong class=\"purple\">must</strong> be <code>0</code> or a value returned in the <code>externalFormat</code> member of <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a> by an earlier call to <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a>" 8070 }, 8071 { 8072 "vuid": "VUID-VkExternalFormatANDROID-sType-sType", 8073 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID</code>" 8074 } 8075 ] 8076 }, 8077 "VkImageSwapchainCreateInfoKHR": { 8078 "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [ 8079 { 8080 "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995", 8081 "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the fields of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> <strong class=\"purple\">must</strong> match the <a href=\"#swapchain-wsi-image-create-info\">implied image creation parameters</a> of the swapchain" 8082 }, 8083 { 8084 "vuid": "VUID-VkImageSwapchainCreateInfoKHR-sType-sType", 8085 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR</code>" 8086 }, 8087 { 8088 "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-parameter", 8089 "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle" 8090 } 8091 ] 8092 }, 8093 "VkImageFormatListCreateInfoKHR": { 8094 "(VK_KHR_image_format_list)": [ 8095 { 8096 "vuid": "VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01578", 8097 "text": " If <code>viewFormatCount</code> is not <code>0</code>, all of the formats in the <code>pViewFormats</code> array <strong class=\"purple\">must</strong> be compatible with the format specified in the <code>format</code> field of <code>VkImageCreateInfo</code>, as described in the <a href=\"#formats-compatibility\">compatibility table</a>." 8098 }, 8099 { 8100 "vuid": "VUID-VkImageFormatListCreateInfoKHR-flags-01579", 8101 "text": " If <code>VkImageCreateInfo</code>::<code>flags</code> does not contain <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, <code>viewFormatCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>." 8102 }, 8103 { 8104 "vuid": "VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01580", 8105 "text": " If <code>viewFormatCount</code> is not <code>0</code>, <code>VkImageCreateInfo</code>::<code>format</code> <strong class=\"purple\">must</strong> be in <code>pViewFormats</code>." 8106 }, 8107 { 8108 "vuid": "VUID-VkImageFormatListCreateInfoKHR-sType-sType", 8109 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR</code>" 8110 }, 8111 { 8112 "vuid": "VUID-VkImageFormatListCreateInfoKHR-pViewFormats-parameter", 8113 "text": " If <code>viewFormatCount</code> is not <code>0</code>, <code>pViewFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewFormatCount</code> valid <a href=\"#VkFormat\">VkFormat</a> values" 8114 } 8115 ] 8116 }, 8117 "VkImageDrmFormatModifierListCreateInfoEXT": { 8118 "(VK_EXT_image_drm_format_modifier)": [ 8119 { 8120 "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-02263", 8121 "text": " Each <em>modifier</em> in <code>pDrmFormatModifiers</code> must be compatible with the parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> and its <code>pNext</code> chain, as determined by querying <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> extended with <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>." 8122 }, 8123 { 8124 "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-sType-sType", 8125 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT</code>" 8126 }, 8127 { 8128 "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-parameter", 8129 "text": " <code>pDrmFormatModifiers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>drmFormatModifierCount</code> <code>uint64_t</code> values" 8130 }, 8131 { 8132 "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-drmFormatModifierCount-arraylength", 8133 "text": " <code>drmFormatModifierCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 8134 } 8135 ] 8136 }, 8137 "VkImageDrmFormatModifierExplicitCreateInfoEXT": { 8138 "(VK_EXT_image_drm_format_modifier)": [ 8139 { 8140 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifier-02264", 8141 "text": " <code>drmFormatModifier</code> must be compatible with the parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> and its <code>pNext</code> chain, as determined by querying <a href=\"#VkPhysicalDeviceImageFormatInfo2KHR\">VkPhysicalDeviceImageFormatInfo2KHR</a> extended with <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>." 8142 }, 8143 { 8144 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifierPlaneCount-02265", 8145 "text": " <code>drmFormatModifierPlaneCount</code> <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>format</code> and <code>drmFormatModifier</code>, as found by querying <a href=\"#VkDrmFormatModifierPropertiesListEXT\">VkDrmFormatModifierPropertiesListEXT</a>." 8146 }, 8147 { 8148 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267", 8149 "text": " For each element of <code>pPlaneLayouts</code>, <code>size</code> <strong class=\"purple\">must</strong> be 0" 8150 }, 8151 { 8152 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268", 8153 "text": " For each element of <code>pPlaneLayouts</code>, <code>arrayPitch</code> <strong class=\"purple\">must</strong> be 0 if <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>arrayLayers</code> is 1." 8154 }, 8155 { 8156 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269", 8157 "text": " For each element of <code>pPlaneLayouts</code>, <code>depthPitch</code> <strong class=\"purple\">must</strong> be 0 if <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>extent</code>::<code>depth</code> is 1." 8158 }, 8159 { 8160 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-sType-sType", 8161 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT</code>" 8162 }, 8163 { 8164 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-pPlaneLayouts-parameter", 8165 "text": " If <code>drmFormatModifierPlaneCount</code> is not <code>0</code>, <code>pPlaneLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>drmFormatModifierPlaneCount</code> <code>VkSubresourceLayout</code> structures" 8166 } 8167 ] 8168 }, 8169 "vkGetImageSubresourceLayout": { 8170 "!(VK_EXT_image_drm_format_modifier)": [ 8171 { 8172 "vuid": "VUID-vkGetImageSubresourceLayout-image-00996", 8173 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>tiling</code> equal to <code>VK_IMAGE_TILING_LINEAR</code>" 8174 } 8175 ], 8176 "(VK_EXT_image_drm_format_modifier)": [ 8177 { 8178 "vuid": "VUID-vkGetImageSubresourceLayout-image-02270", 8179 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>tiling</code> equal to <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>" 8180 }, 8181 { 8182 "vuid": "VUID-vkGetImageSubresourceLayout-tiling-02271", 8183 "text": " If the <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT and the index <em>i</em> <strong class=\"purple\">must</strong> be less than the <a href=\"#VkDrmFormatModifierPropertiesEXT\"><code>drmFormatModifierPlaneCount</code></a> associated with the image’s <a href=\"#VkImageCreateInfo\"><code>format</code></a> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\"><code>drmFormatModifier</code></a>." 8184 } 8185 ], 8186 "core": [ 8187 { 8188 "vuid": "VUID-vkGetImageSubresourceLayout-aspectMask-00997", 8189 "text": " The <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set" 8190 }, 8191 { 8192 "vuid": "VUID-vkGetImageSubresourceLayout-mipLevel-01716", 8193 "text": " The <code>mipLevel</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 8194 }, 8195 { 8196 "vuid": "VUID-vkGetImageSubresourceLayout-arrayLayer-01717", 8197 "text": " The <code>arrayLayer</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 8198 }, 8199 { 8200 "vuid": "VUID-vkGetImageSubresourceLayout-device-parameter", 8201 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 8202 }, 8203 { 8204 "vuid": "VUID-vkGetImageSubresourceLayout-image-parameter", 8205 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 8206 }, 8207 { 8208 "vuid": "VUID-vkGetImageSubresourceLayout-pSubresource-parameter", 8209 "text": " <code>pSubresource</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageSubresource</code> structure" 8210 }, 8211 { 8212 "vuid": "VUID-vkGetImageSubresourceLayout-pLayout-parameter", 8213 "text": " <code>pLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSubresourceLayout</code> structure" 8214 }, 8215 { 8216 "vuid": "VUID-vkGetImageSubresourceLayout-image-parent", 8217 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 8218 } 8219 ], 8220 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 8221 { 8222 "vuid": "VUID-vkGetImageSubresourceLayout-format-01581", 8223 "text": " If the <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> and its <code>format</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a> with two planes, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" 8224 }, 8225 { 8226 "vuid": "VUID-vkGetImageSubresourceLayout-format-01582", 8227 "text": " If the <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> and its <code>format</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a> with three planes, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" 8228 } 8229 ], 8230 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 8231 { 8232 "vuid": "VUID-vkGetImageSubresourceLayout-image-01895", 8233 "text": " If <code>image</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory." 8234 } 8235 ] 8236 }, 8237 "VkImageSubresource": { 8238 "core": [ 8239 { 8240 "vuid": "VUID-VkImageSubresource-aspectMask-parameter", 8241 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values" 8242 }, 8243 { 8244 "vuid": "VUID-VkImageSubresource-aspectMask-requiredbitmask", 8245 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 8246 } 8247 ] 8248 }, 8249 "vkGetImageDrmFormatModifierPropertiesEXT": { 8250 "(VK_EXT_image_drm_format_modifier)": [ 8251 { 8252 "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-02272", 8253 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkImageCreateInfo\"><code>tiling</code></a> equal to <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>." 8254 }, 8255 { 8256 "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter", 8257 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 8258 }, 8259 { 8260 "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parameter", 8261 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 8262 }, 8263 { 8264 "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-pProperties-parameter", 8265 "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageDrmFormatModifierPropertiesEXT</code> structure" 8266 }, 8267 { 8268 "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parent", 8269 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 8270 } 8271 ] 8272 }, 8273 "VkImageDrmFormatModifierPropertiesEXT": { 8274 "(VK_EXT_image_drm_format_modifier)": [ 8275 { 8276 "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-sType-sType", 8277 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT</code>" 8278 }, 8279 { 8280 "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-pNext-pNext", 8281 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 8282 } 8283 ] 8284 }, 8285 "vkDestroyImage": { 8286 "core": [ 8287 { 8288 "vuid": "VUID-vkDestroyImage-image-01000", 8289 "text": " All submitted commands that refer to <code>image</code>, either directly or via a <code>VkImageView</code>, <strong class=\"purple\">must</strong> have completed execution" 8290 }, 8291 { 8292 "vuid": "VUID-vkDestroyImage-image-01001", 8293 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>image</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 8294 }, 8295 { 8296 "vuid": "VUID-vkDestroyImage-image-01002", 8297 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>image</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 8298 }, 8299 { 8300 "vuid": "VUID-vkDestroyImage-device-parameter", 8301 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 8302 }, 8303 { 8304 "vuid": "VUID-vkDestroyImage-image-parameter", 8305 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 8306 }, 8307 { 8308 "vuid": "VUID-vkDestroyImage-pAllocator-parameter", 8309 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 8310 }, 8311 { 8312 "vuid": "VUID-vkDestroyImage-image-parent", 8313 "text": " If <code>image</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 8314 } 8315 ] 8316 }, 8317 "vkCreateImageView": { 8318 "core": [ 8319 { 8320 "vuid": "VUID-vkCreateImageView-device-parameter", 8321 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 8322 }, 8323 { 8324 "vuid": "VUID-vkCreateImageView-pCreateInfo-parameter", 8325 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageViewCreateInfo</code> structure" 8326 }, 8327 { 8328 "vuid": "VUID-vkCreateImageView-pAllocator-parameter", 8329 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 8330 }, 8331 { 8332 "vuid": "VUID-vkCreateImageView-pView-parameter", 8333 "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageView</code> handle" 8334 } 8335 ] 8336 }, 8337 "VkImageViewCreateInfo": { 8338 "core": [ 8339 { 8340 "vuid": "VUID-VkImageViewCreateInfo-image-01003", 8341 "text": " If <code>image</code> was not created with <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code> then <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_CUBE</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 8342 }, 8343 { 8344 "vuid": "VUID-VkImageViewCreateInfo-viewType-01004", 8345 "text": " If the <a href=\"#features-imageCubeArray\">image cubemap arrays</a> feature is not enabled, <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 8346 }, 8347 { 8348 "vuid": "VUID-VkImageViewCreateInfo-None-02273", 8349 "text": " The <a href=\"#resources-image-view-format-features\">format features</a> of the resultant image view <strong class=\"purple\">must</strong> contain at least one bit." 8350 }, 8351 { 8352 "vuid": "VUID-VkImageViewCreateInfo-usage-02274", 8353 "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, then the <a href=\"#resources-image-view-format-features\">format features</a> of the resultant image view <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT</code>." 8354 }, 8355 { 8356 "vuid": "VUID-VkImageViewCreateInfo-usage-02275", 8357 "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT</code>." 8358 }, 8359 { 8360 "vuid": "VUID-VkImageViewCreateInfo-usage-02276", 8361 "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>." 8362 }, 8363 { 8364 "vuid": "VUID-VkImageViewCreateInfo-usage-02277", 8365 "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>." 8366 }, 8367 { 8368 "vuid": "VUID-VkImageViewCreateInfo-usage-02652", 8369 "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain at least one of <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>." 8370 }, 8371 { 8372 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01478", 8373 "text": " <code>subresourceRange.baseMipLevel</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 8374 }, 8375 { 8376 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01718", 8377 "text": " If <code>subresourceRange.levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, <span class=\"eq\"><code>subresourceRange.baseMipLevel</code> + <code>subresourceRange.levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 8378 }, 8379 { 8380 "vuid": "VUID-VkImageViewCreateInfo-image-01018", 8381 "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>" 8382 }, 8383 { 8384 "vuid": "VUID-VkImageViewCreateInfo-image-01020", 8385 "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 8386 }, 8387 { 8388 "vuid": "VUID-VkImageViewCreateInfo-subResourceRange-01021", 8389 "text": " <code>subresourceRange</code> and <code>viewType</code> <strong class=\"purple\">must</strong> be compatible with the image, as described in the <a href=\"#resources-image-views-compatibility\">compatibility table</a>" 8390 }, 8391 { 8392 "vuid": "VUID-VkImageViewCreateInfo-sType-sType", 8393 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO</code>" 8394 }, 8395 { 8396 "vuid": "VUID-VkImageViewCreateInfo-pNext-pNext", 8397 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkImageViewASTCDecodeModeEXT\">VkImageViewASTCDecodeModeEXT</a>, <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a>, or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>" 8398 }, 8399 { 8400 "vuid": "VUID-VkImageViewCreateInfo-sType-unique", 8401 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 8402 }, 8403 { 8404 "vuid": "VUID-VkImageViewCreateInfo-flags-parameter", 8405 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageViewCreateFlagBits\">VkImageViewCreateFlagBits</a> values" 8406 }, 8407 { 8408 "vuid": "VUID-VkImageViewCreateInfo-image-parameter", 8409 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 8410 }, 8411 { 8412 "vuid": "VUID-VkImageViewCreateInfo-viewType-parameter", 8413 "text": " <code>viewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value" 8414 }, 8415 { 8416 "vuid": "VUID-VkImageViewCreateInfo-format-parameter", 8417 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 8418 }, 8419 { 8420 "vuid": "VUID-VkImageViewCreateInfo-components-parameter", 8421 "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <code>VkComponentMapping</code> structure" 8422 }, 8423 { 8424 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-parameter", 8425 "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceRange</code> structure" 8426 } 8427 ], 8428 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 8429 { 8430 "vuid": "VUID-VkImageViewCreateInfo-image-01005", 8431 "text": " If <code>image</code> was created with <code>VK_IMAGE_TYPE_3D</code> but without <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set then <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>" 8432 }, 8433 { 8434 "vuid": "VUID-VkImageViewCreateInfo-image-01482", 8435 "text": " If <code>image</code> is not a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, or <code>viewType</code> is not <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 8436 }, 8437 { 8438 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01483", 8439 "text": " If <code>subresourceRange</code>::<code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>image</code> is not a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, or <code>viewType</code> is not <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>subresourceRange</code>::<code>baseArrayLayer</code> + <code>subresourceRange</code>::<code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 8440 }, 8441 { 8442 "vuid": "VUID-VkImageViewCreateInfo-image-01484", 8443 "text": " If <code>image</code> is a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>extent.depth</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 8444 }, 8445 { 8446 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01485", 8447 "text": " If <code>subresourceRange</code>::<code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>image</code> is a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>subresourceRange</code>::<code>baseArrayLayer</code> + <code>subresourceRange</code>::<code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>extent.depth</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 8448 } 8449 ], 8450 "!(VK_EXT_fragment_density_map)+!(VK_NV_shading_rate_image)": [ 8451 { 8452 "vuid": "VUID-VkImageViewCreateInfo-image-01007", 8453 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>" 8454 } 8455 ], 8456 "!(VK_EXT_fragment_density_map)+(VK_NV_shading_rate_image)": [ 8457 { 8458 "vuid": "VUID-VkImageViewCreateInfo-image-02085", 8459 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>" 8460 } 8461 ], 8462 "(VK_EXT_fragment_density_map)+!(VK_NV_shading_rate_image)": [ 8463 { 8464 "vuid": "VUID-VkImageViewCreateInfo-image-02569", 8465 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>" 8466 } 8467 ], 8468 "(VK_EXT_fragment_density_map)+(VK_NV_shading_rate_image)": [ 8469 { 8470 "vuid": "VUID-VkImageViewCreateInfo-image-02570", 8471 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, or <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>" 8472 } 8473 ], 8474 "(VK_EXT_fragment_density_map)": [ 8475 { 8476 "vuid": "VUID-VkImageViewCreateInfo-image-02571", 8477 "text": " If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>subresourceRange.levelCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 8478 }, 8479 { 8480 "vuid": "VUID-VkImageViewCreateInfo-flags-02572", 8481 "text": " If <a href=\"#features-fragmentdensitymapdynamic\">dynamic fragment density map</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT</code>" 8482 }, 8483 { 8484 "vuid": "VUID-VkImageViewCreateInfo-image-02573", 8485 "text": " If <a href=\"#features-fragmentdensitymapdynamic\">dynamic fragment density map</a> feature is not enabled and <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain any of <code>VK_IMAGE_CREATE_PROTECTED_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>" 8486 } 8487 ], 8488 "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 8489 { 8490 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01480", 8491 "text": " <code>subresourceRange.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 8492 }, 8493 { 8494 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01719", 8495 "text": " If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> + <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 8496 } 8497 ], 8498 "(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 8499 { 8500 "vuid": "VUID-VkImageViewCreateInfo-image-01759", 8501 "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, but without the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>" 8502 } 8503 ], 8504 "!(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 8505 { 8506 "vuid": "VUID-VkImageViewCreateInfo-image-01760", 8507 "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, and if the <code>format</code> of the <code>image</code> is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>" 8508 } 8509 ], 8510 "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 8511 { 8512 "vuid": "VUID-VkImageViewCreateInfo-image-01761", 8513 "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, but without the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, and if the <code>format</code> of the <code>image</code> is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>" 8514 } 8515 ], 8516 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 8517 { 8518 "vuid": "VUID-VkImageViewCreateInfo-image-01583", 8519 "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be compatible with, or <strong class=\"purple\">must</strong> be an uncompressed format that is size-compatible with, the <code>format</code> used to create <code>image</code>." 8520 }, 8521 { 8522 "vuid": "VUID-VkImageViewCreateInfo-image-01584", 8523 "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, the <code>levelCount</code> and <code>layerCount</code> members of <code>subresourceRange</code> <strong class=\"purple\">must</strong> both be <code>1</code>." 8524 } 8525 ], 8526 "(VK_KHR_image_format_list)": [ 8527 { 8528 "vuid": "VUID-VkImageViewCreateInfo-pNext-01585", 8529 "text": " If a <code>VkImageFormatListCreateInfoKHR</code> structure was included in the <code>pNext</code> chain of the <code>VkImageCreateInfo</code> struct used when creating <code>image</code> and the <code>viewFormatCount</code> field of <code>VkImageFormatListCreateInfoKHR</code> is not zero then <code>format</code> <strong class=\"purple\">must</strong> be one of the formats in <code>VkImageFormatListCreateInfoKHR</code>::<code>pViewFormats</code>." 8530 } 8531 ], 8532 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 8533 { 8534 "vuid": "VUID-VkImageViewCreateInfo-image-01586", 8535 "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, if the <code>format</code> of the <code>image</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format, and if <code>subresourceRange.aspectMask</code> is one of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>, then <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <a href=\"#VkFormat\">VkFormat</a> for the plane of the <code>image</code> <code>format</code> indicated by <code>subresourceRange.aspectMask</code>, as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>" 8536 }, 8537 { 8538 "vuid": "VUID-VkImageViewCreateInfo-image-01762", 8539 "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, or if the <code>format</code> of the <code>image</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format and if <code>subresourceRange.aspectMask</code> is <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be identical to the <code>format</code> used to create <code>image</code>" 8540 }, 8541 { 8542 "vuid": "VUID-VkImageViewCreateInfo-pNext-01970", 8543 "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> with a <code>conversion</code> value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, all members of <code>components</code> <strong class=\"purple\">must</strong> have the value <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>." 8544 } 8545 ], 8546 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 8547 { 8548 "vuid": "VUID-VkImageViewCreateInfo-image-01019", 8549 "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be identical to the <code>format</code> used to create <code>image</code>" 8550 } 8551 ], 8552 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 8553 { 8554 "vuid": "VUID-VkImageViewCreateInfo-image-02399", 8555 "text": " If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">external format</a>, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>." 8556 }, 8557 { 8558 "vuid": "VUID-VkImageViewCreateInfo-image-02400", 8559 "text": " If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">external format</a>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> with a <code>conversion</code> object created with the same external format as <code>image</code>." 8560 }, 8561 { 8562 "vuid": "VUID-VkImageViewCreateInfo-image-02401", 8563 "text": " If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">external format</a>, all members of <code>components</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>." 8564 } 8565 ], 8566 "(VK_NV_shading_rate_image)": [ 8567 { 8568 "vuid": "VUID-VkImageViewCreateInfo-image-02086", 8569 "text": " If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>" 8570 }, 8571 { 8572 "vuid": "VUID-VkImageViewCreateInfo-image-02087", 8573 "text": " If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_R8_UINT</code>" 8574 } 8575 ] 8576 }, 8577 "VkImageViewUsageCreateInfo": { 8578 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 8579 { 8580 "vuid": "VUID-VkImageViewUsageCreateInfo-usage-01587", 8581 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not include any set bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used to create the image this image view is created from." 8582 }, 8583 { 8584 "vuid": "VUID-VkImageViewUsageCreateInfo-sType-sType", 8585 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO</code>" 8586 }, 8587 { 8588 "vuid": "VUID-VkImageViewUsageCreateInfo-usage-parameter", 8589 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 8590 }, 8591 { 8592 "vuid": "VUID-VkImageViewUsageCreateInfo-usage-requiredbitmask", 8593 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 8594 } 8595 ] 8596 }, 8597 "VkImageSubresourceRange": { 8598 "core": [ 8599 { 8600 "vuid": "VUID-VkImageSubresourceRange-levelCount-01720", 8601 "text": " If <code>levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, it <strong class=\"purple\">must</strong> be greater than <code>0</code>" 8602 }, 8603 { 8604 "vuid": "VUID-VkImageSubresourceRange-layerCount-01721", 8605 "text": " If <code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, it <strong class=\"purple\">must</strong> be greater than <code>0</code>" 8606 }, 8607 { 8608 "vuid": "VUID-VkImageSubresourceRange-aspectMask-parameter", 8609 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values" 8610 }, 8611 { 8612 "vuid": "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask", 8613 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 8614 } 8615 ], 8616 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 8617 { 8618 "vuid": "VUID-VkImageSubresourceRange-aspectMask-01670", 8619 "text": " If <code>aspectMask</code> includes <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, then it <strong class=\"purple\">must</strong> not include any of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" 8620 } 8621 ], 8622 "(VK_EXT_image_drm_format_modifier)": [ 8623 { 8624 "vuid": "VUID-VkImageSubresourceRange-aspectMask-02278", 8625 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT for any index <em>i</em>." 8626 } 8627 ] 8628 }, 8629 "VkComponentMapping": { 8630 "core": [ 8631 { 8632 "vuid": "VUID-VkComponentMapping-r-parameter", 8633 "text": " <code>r</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value" 8634 }, 8635 { 8636 "vuid": "VUID-VkComponentMapping-g-parameter", 8637 "text": " <code>g</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value" 8638 }, 8639 { 8640 "vuid": "VUID-VkComponentMapping-b-parameter", 8641 "text": " <code>b</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value" 8642 }, 8643 { 8644 "vuid": "VUID-VkComponentMapping-a-parameter", 8645 "text": " <code>a</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value" 8646 } 8647 ] 8648 }, 8649 "VkImageViewASTCDecodeModeEXT": { 8650 "(VK_EXT_astc_decode_mode)": [ 8651 { 8652 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02230", 8653 "text": " <code>decodeMode</code> <strong class=\"purple\">must</strong> be one of <code>VK_FORMAT_R16G16B16A16_SFLOAT</code>, <code>VK_FORMAT_R8G8B8A8_UNORM</code>, or <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>" 8654 }, 8655 { 8656 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231", 8657 "text": " If the <a href=\"#features-astc-decodeModeSharedExponent\"><code>decodeModeSharedExponent</code></a> feature is not enabled, <code>decodeMode</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>" 8658 }, 8659 { 8660 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02232", 8661 "text": " If <code>decodeMode</code> is <code>VK_FORMAT_R8G8B8A8_UNORM</code> the image view <strong class=\"purple\">must</strong> not include blocks using any of the ASTC HDR modes" 8662 }, 8663 { 8664 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-format-02233", 8665 "text": " <code>format</code> of the image view <strong class=\"purple\">must</strong> be one of <code>VK_FORMAT_ASTC_4x4_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_4x4_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_5x4_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_5x4_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_5x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_5x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_6x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_6x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_6x6_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_6x6_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_8x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_8x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_8x6_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_8x6_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_8x8_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_8x8_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x6_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x6_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x8_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x8_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x10_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x10_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_12x10_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_12x10_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_12x12_UNORM_BLOCK</code>, or <code>VK_FORMAT_ASTC_12x12_SRGB_BLOCK</code>" 8666 }, 8667 { 8668 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-sType-sType", 8669 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT</code>" 8670 }, 8671 { 8672 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-parameter", 8673 "text": " <code>decodeMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 8674 } 8675 ] 8676 }, 8677 "vkDestroyImageView": { 8678 "core": [ 8679 { 8680 "vuid": "VUID-vkDestroyImageView-imageView-01026", 8681 "text": " All submitted commands that refer to <code>imageView</code> <strong class=\"purple\">must</strong> have completed execution" 8682 }, 8683 { 8684 "vuid": "VUID-vkDestroyImageView-imageView-01027", 8685 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>imageView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 8686 }, 8687 { 8688 "vuid": "VUID-vkDestroyImageView-imageView-01028", 8689 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>imageView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 8690 }, 8691 { 8692 "vuid": "VUID-vkDestroyImageView-device-parameter", 8693 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 8694 }, 8695 { 8696 "vuid": "VUID-vkDestroyImageView-imageView-parameter", 8697 "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> handle" 8698 }, 8699 { 8700 "vuid": "VUID-vkDestroyImageView-pAllocator-parameter", 8701 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 8702 }, 8703 { 8704 "vuid": "VUID-vkDestroyImageView-imageView-parent", 8705 "text": " If <code>imageView</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 8706 } 8707 ] 8708 }, 8709 "vkGetImageViewHandleNVX": { 8710 "(VK_NVX_image_view_handle)": [ 8711 { 8712 "vuid": "VUID-vkGetImageViewHandleNVX-device-parameter", 8713 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 8714 }, 8715 { 8716 "vuid": "VUID-vkGetImageViewHandleNVX-pInfo-parameter", 8717 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageViewHandleInfoNVX</code> structure" 8718 } 8719 ] 8720 }, 8721 "VkImageViewHandleInfoNVX": { 8722 "(VK_NVX_image_view_handle)": [ 8723 { 8724 "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-02654", 8725 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>" 8726 }, 8727 { 8728 "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-02655", 8729 "text": " <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampler\">VkSampler</a> if <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>" 8730 }, 8731 { 8732 "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02656", 8733 "text": " If descriptorType is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the image that <code>imageView</code> was created from <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> usage bit set" 8734 }, 8735 { 8736 "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02657", 8737 "text": " If descriptorType is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, the image that <code>imageView</code> was created from <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_USAGE_STORAGE_BIT</code> usage bit set" 8738 }, 8739 { 8740 "vuid": "VUID-VkImageViewHandleInfoNVX-sType-sType", 8741 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX</code>" 8742 }, 8743 { 8744 "vuid": "VUID-VkImageViewHandleInfoNVX-pNext-pNext", 8745 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 8746 }, 8747 { 8748 "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-parameter", 8749 "text": " <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> handle" 8750 }, 8751 { 8752 "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-parameter", 8753 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value" 8754 }, 8755 { 8756 "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-parameter", 8757 "text": " If <code>sampler</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampler</code> handle" 8758 }, 8759 { 8760 "vuid": "VUID-VkImageViewHandleInfoNVX-commonparent", 8761 "text": " Both of <code>imageView</code>, and <code>sampler</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 8762 } 8763 ] 8764 }, 8765 "vkGetBufferMemoryRequirements": { 8766 "core": [ 8767 { 8768 "vuid": "VUID-vkGetBufferMemoryRequirements-device-parameter", 8769 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 8770 }, 8771 { 8772 "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parameter", 8773 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 8774 }, 8775 { 8776 "vuid": "VUID-vkGetBufferMemoryRequirements-pMemoryRequirements-parameter", 8777 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements</code> structure" 8778 }, 8779 { 8780 "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parent", 8781 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 8782 } 8783 ] 8784 }, 8785 "vkGetImageMemoryRequirements": { 8786 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 8787 { 8788 "vuid": "VUID-vkGetImageMemoryRequirements-image-01588", 8789 "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag set" 8790 } 8791 ], 8792 "core": [ 8793 { 8794 "vuid": "VUID-vkGetImageMemoryRequirements-device-parameter", 8795 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 8796 }, 8797 { 8798 "vuid": "VUID-vkGetImageMemoryRequirements-image-parameter", 8799 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 8800 }, 8801 { 8802 "vuid": "VUID-vkGetImageMemoryRequirements-pMemoryRequirements-parameter", 8803 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements</code> structure" 8804 }, 8805 { 8806 "vuid": "VUID-vkGetImageMemoryRequirements-image-parent", 8807 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 8808 } 8809 ] 8810 }, 8811 "vkGetBufferMemoryRequirements2": { 8812 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 8813 { 8814 "vuid": "VUID-vkGetBufferMemoryRequirements2-device-parameter", 8815 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 8816 }, 8817 { 8818 "vuid": "VUID-vkGetBufferMemoryRequirements2-pInfo-parameter", 8819 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferMemoryRequirementsInfo2</code> structure" 8820 }, 8821 { 8822 "vuid": "VUID-vkGetBufferMemoryRequirements2-pMemoryRequirements-parameter", 8823 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements2</code> structure" 8824 } 8825 ] 8826 }, 8827 "VkBufferMemoryRequirementsInfo2": { 8828 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 8829 { 8830 "vuid": "VUID-VkBufferMemoryRequirementsInfo2-sType-sType", 8831 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2</code>" 8832 }, 8833 { 8834 "vuid": "VUID-VkBufferMemoryRequirementsInfo2-pNext-pNext", 8835 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 8836 }, 8837 { 8838 "vuid": "VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter", 8839 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 8840 } 8841 ] 8842 }, 8843 "vkGetImageMemoryRequirements2": { 8844 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 8845 { 8846 "vuid": "VUID-vkGetImageMemoryRequirements2-device-parameter", 8847 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 8848 }, 8849 { 8850 "vuid": "VUID-vkGetImageMemoryRequirements2-pInfo-parameter", 8851 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageMemoryRequirementsInfo2</code> structure" 8852 }, 8853 { 8854 "vuid": "VUID-vkGetImageMemoryRequirements2-pMemoryRequirements-parameter", 8855 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements2</code> structure" 8856 } 8857 ] 8858 }, 8859 "VkImageMemoryRequirementsInfo2": { 8860 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 8861 { 8862 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01589", 8863 "text": " If <code>image</code> was created with a <em>multi-planar</em> format and the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure" 8864 }, 8865 { 8866 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01590", 8867 "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure" 8868 } 8869 ], 8870 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [ 8871 { 8872 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02279", 8873 "text": " If <code>image</code> was created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> and with <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure" 8874 }, 8875 { 8876 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02280", 8877 "text": " If <code>image</code> was created with a single-plane format and with any <code>tiling</code> other than <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure" 8878 } 8879 ], 8880 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_image_drm_format_modifier)": [ 8881 { 8882 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01591", 8883 "text": " If <code>image</code> was created with a single-plane format, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure" 8884 } 8885 ], 8886 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [ 8887 { 8888 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01897", 8889 "text": " If <code>image</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory." 8890 } 8891 ], 8892 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 8893 { 8894 "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-sType", 8895 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2</code>" 8896 }, 8897 { 8898 "vuid": "VUID-VkImageMemoryRequirementsInfo2-pNext-pNext", 8899 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>" 8900 }, 8901 { 8902 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-parameter", 8903 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 8904 } 8905 ] 8906 }, 8907 "VkImagePlaneMemoryRequirementsInfo": { 8908 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 8909 { 8910 "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281", 8911 "text": " If the image’s tiling is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>format plane</em> for the image. (That is, for a two-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and for a three-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>)." 8912 }, 8913 { 8914 "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-sType-sType", 8915 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO</code>" 8916 }, 8917 { 8918 "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter", 8919 "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value" 8920 } 8921 ], 8922 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [ 8923 { 8924 "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282", 8925 "text": " If the image’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’s <a href=\"#VkImageCreateInfo\"><code>format</code></a> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\"><code>drmFormatModifier</code></a>.)" 8926 } 8927 ] 8928 }, 8929 "VkMemoryRequirements2": { 8930 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 8931 { 8932 "vuid": "VUID-VkMemoryRequirements2-sType-sType", 8933 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2</code>" 8934 }, 8935 { 8936 "vuid": "VUID-VkMemoryRequirements2-pNext-pNext", 8937 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>" 8938 } 8939 ] 8940 }, 8941 "VkMemoryDedicatedRequirements": { 8942 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 8943 { 8944 "vuid": "VUID-VkMemoryDedicatedRequirements-sType-sType", 8945 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS</code>" 8946 } 8947 ] 8948 }, 8949 "vkBindBufferMemory": { 8950 "core": [ 8951 { 8952 "vuid": "VUID-vkBindBufferMemory-buffer-01029", 8953 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object" 8954 }, 8955 { 8956 "vuid": "VUID-vkBindBufferMemory-buffer-01030", 8957 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags" 8958 }, 8959 { 8960 "vuid": "VUID-vkBindBufferMemory-memoryOffset-01031", 8961 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>" 8962 }, 8963 { 8964 "vuid": "VUID-vkBindBufferMemory-memory-01035", 8965 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>" 8966 }, 8967 { 8968 "vuid": "VUID-vkBindBufferMemory-memoryOffset-01036", 8969 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>" 8970 }, 8971 { 8972 "vuid": "VUID-vkBindBufferMemory-size-01037", 8973 "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>" 8974 }, 8975 { 8976 "vuid": "VUID-vkBindBufferMemory-device-parameter", 8977 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 8978 }, 8979 { 8980 "vuid": "VUID-vkBindBufferMemory-buffer-parameter", 8981 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 8982 }, 8983 { 8984 "vuid": "VUID-vkBindBufferMemory-memory-parameter", 8985 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle" 8986 }, 8987 { 8988 "vuid": "VUID-vkBindBufferMemory-buffer-parent", 8989 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 8990 }, 8991 { 8992 "vuid": "VUID-vkBindBufferMemory-memory-parent", 8993 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 8994 } 8995 ], 8996 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 8997 { 8998 "vuid": "VUID-vkBindBufferMemory-buffer-01444", 8999 "text": " If <code>buffer</code> requires a dedicated allocation(as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code>" 9000 }, 9001 { 9002 "vuid": "VUID-vkBindBufferMemory-memory-01508", 9003 "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code>, and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero." 9004 } 9005 ], 9006 "(VK_VERSION_1_1)": [ 9007 { 9008 "vuid": "VUID-vkBindBufferMemory-None-01898", 9009 "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit set, the buffer <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>" 9010 }, 9011 { 9012 "vuid": "VUID-vkBindBufferMemory-None-01899", 9013 "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit not set, the buffer <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>" 9014 } 9015 ], 9016 "(VK_NV_dedicated_allocation)": [ 9017 { 9018 "vuid": "VUID-vkBindBufferMemory-buffer-01038", 9019 "text": " If <code>buffer</code> was created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>buffer</code> equal to a buffer handle created with identical creation parameters to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 9020 } 9021 ], 9022 "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 9023 { 9024 "vuid": "VUID-vkBindBufferMemory-buffer-01039", 9025 "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" 9026 } 9027 ] 9028 }, 9029 "vkBindBufferMemory2": { 9030 "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [ 9031 { 9032 "vuid": "VUID-vkBindBufferMemory2-device-parameter", 9033 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 9034 }, 9035 { 9036 "vuid": "VUID-vkBindBufferMemory2-pBindInfos-parameter", 9037 "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindBufferMemoryInfo</code> structures" 9038 }, 9039 { 9040 "vuid": "VUID-vkBindBufferMemory2-bindInfoCount-arraylength", 9041 "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 9042 } 9043 ] 9044 }, 9045 "VkBindBufferMemoryInfo": { 9046 "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [ 9047 { 9048 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01593", 9049 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object" 9050 }, 9051 { 9052 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01594", 9053 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags" 9054 }, 9055 { 9056 "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01595", 9057 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>" 9058 }, 9059 { 9060 "vuid": "VUID-VkBindBufferMemoryInfo-memory-01599", 9061 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>" 9062 }, 9063 { 9064 "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01600", 9065 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>" 9066 }, 9067 { 9068 "vuid": "VUID-VkBindBufferMemoryInfo-size-01601", 9069 "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>" 9070 }, 9071 { 9072 "vuid": "VUID-VkBindBufferMemoryInfo-sType-sType", 9073 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO</code>" 9074 }, 9075 { 9076 "vuid": "VUID-VkBindBufferMemoryInfo-pNext-pNext", 9077 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>" 9078 }, 9079 { 9080 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-parameter", 9081 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 9082 }, 9083 { 9084 "vuid": "VUID-VkBindBufferMemoryInfo-memory-parameter", 9085 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle" 9086 }, 9087 { 9088 "vuid": "VUID-VkBindBufferMemoryInfo-commonparent", 9089 "text": " Both of <code>buffer</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 9090 } 9091 ], 9092 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 9093 { 9094 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01602", 9095 "text": " If <code>buffer</code> requires a dedicated allocation(as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 9096 }, 9097 { 9098 "vuid": "VUID-VkBindBufferMemoryInfo-memory-01900", 9099 "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero." 9100 } 9101 ], 9102 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [ 9103 { 9104 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01603", 9105 "text": " If <code>buffer</code> was created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>buffer</code> equal to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 9106 } 9107 ], 9108 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 9109 { 9110 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01604", 9111 "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" 9112 } 9113 ], 9114 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 9115 { 9116 "vuid": "VUID-VkBindBufferMemoryInfo-pNext-01605", 9117 "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>, all instances of <code>memory</code> specified by <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated" 9118 } 9119 ] 9120 }, 9121 "VkBindBufferMemoryDeviceGroupInfo": { 9122 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 9123 { 9124 "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-deviceIndexCount-01606", 9125 "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device" 9126 }, 9127 { 9128 "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-01607", 9129 "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices" 9130 }, 9131 { 9132 "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-sType-sType", 9133 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO</code>" 9134 }, 9135 { 9136 "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-parameter", 9137 "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values" 9138 } 9139 ] 9140 }, 9141 "vkBindImageMemory": { 9142 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 9143 { 9144 "vuid": "VUID-vkBindImageMemory-image-01608", 9145 "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set." 9146 } 9147 ], 9148 "core": [ 9149 { 9150 "vuid": "VUID-vkBindImageMemory-image-01044", 9151 "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object" 9152 }, 9153 { 9154 "vuid": "VUID-vkBindImageMemory-image-01045", 9155 "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags" 9156 }, 9157 { 9158 "vuid": "VUID-vkBindImageMemory-memoryOffset-01046", 9159 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>" 9160 }, 9161 { 9162 "vuid": "VUID-vkBindImageMemory-memory-01047", 9163 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code>" 9164 }, 9165 { 9166 "vuid": "VUID-vkBindImageMemory-memoryOffset-01048", 9167 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code>" 9168 }, 9169 { 9170 "vuid": "VUID-vkBindImageMemory-size-01049", 9171 "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>" 9172 }, 9173 { 9174 "vuid": "VUID-vkBindImageMemory-device-parameter", 9175 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 9176 }, 9177 { 9178 "vuid": "VUID-vkBindImageMemory-image-parameter", 9179 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 9180 }, 9181 { 9182 "vuid": "VUID-vkBindImageMemory-memory-parameter", 9183 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle" 9184 }, 9185 { 9186 "vuid": "VUID-vkBindImageMemory-image-parent", 9187 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 9188 }, 9189 { 9190 "vuid": "VUID-vkBindImageMemory-memory-parent", 9191 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 9192 } 9193 ], 9194 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 9195 { 9196 "vuid": "VUID-vkBindImageMemory-image-01445", 9197 "text": " If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>image</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> equal to <code>image</code>" 9198 } 9199 ], 9200 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [ 9201 { 9202 "vuid": "VUID-vkBindImageMemory-memory-01509", 9203 "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero." 9204 } 9205 ], 9206 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [ 9207 { 9208 "vuid": "VUID-vkBindImageMemory-memory-02628", 9209 "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero." 9210 }, 9211 { 9212 "vuid": "VUID-vkBindImageMemory-memory-02629", 9213 "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <code>VkImageCreateInfo</code>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created." 9214 } 9215 ], 9216 "(VK_VERSION_1_1)": [ 9217 { 9218 "vuid": "VUID-vkBindImageMemory-None-01901", 9219 "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit set, the image <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>" 9220 }, 9221 { 9222 "vuid": "VUID-vkBindImageMemory-None-01902", 9223 "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit not set, the image <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>" 9224 } 9225 ], 9226 "(VK_NV_dedicated_allocation)": [ 9227 { 9228 "vuid": "VUID-vkBindImageMemory-image-01050", 9229 "text": " If <code>image</code> was created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>image</code> equal to an image handle created with identical creation parameters to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 9230 } 9231 ], 9232 "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 9233 { 9234 "vuid": "VUID-vkBindImageMemory-image-01051", 9235 "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" 9236 } 9237 ] 9238 }, 9239 "vkBindImageMemory2": { 9240 "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [ 9241 { 9242 "vuid": "VUID-vkBindImageMemory2-device-parameter", 9243 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 9244 }, 9245 { 9246 "vuid": "VUID-vkBindImageMemory2-pBindInfos-parameter", 9247 "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindImageMemoryInfo</code> structures" 9248 }, 9249 { 9250 "vuid": "VUID-vkBindImageMemory2-bindInfoCount-arraylength", 9251 "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 9252 } 9253 ] 9254 }, 9255 "VkBindImageMemoryInfo": { 9256 "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [ 9257 { 9258 "vuid": "VUID-VkBindImageMemoryInfo-image-01609", 9259 "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object" 9260 }, 9261 { 9262 "vuid": "VUID-VkBindImageMemoryInfo-image-01610", 9263 "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags" 9264 }, 9265 { 9266 "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01611", 9267 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>" 9268 }, 9269 { 9270 "vuid": "VUID-VkBindImageMemoryInfo-sType-sType", 9271 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO</code>" 9272 }, 9273 { 9274 "vuid": "VUID-VkBindImageMemoryInfo-pNext-pNext", 9275 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, or <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>" 9276 }, 9277 { 9278 "vuid": "VUID-VkBindImageMemoryInfo-sType-unique", 9279 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 9280 }, 9281 { 9282 "vuid": "VUID-VkBindImageMemoryInfo-image-parameter", 9283 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 9284 }, 9285 { 9286 "vuid": "VUID-VkBindImageMemoryInfo-commonparent", 9287 "text": " Both of <code>image</code>, and <code>memory</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 9288 } 9289 ], 9290 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 9291 { 9292 "vuid": "VUID-VkBindImageMemoryInfo-memory-01612", 9293 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>" 9294 }, 9295 { 9296 "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01613", 9297 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>" 9298 }, 9299 { 9300 "vuid": "VUID-VkBindImageMemoryInfo-memory-01614", 9301 "text": " The difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with the same <code>image</code>" 9302 } 9303 ], 9304 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 9305 { 9306 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01615", 9307 "text": " If the <code>pNext</code> chain does not include an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>" 9308 }, 9309 { 9310 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01616", 9311 "text": " If the <code>pNext</code> chain does not include an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>" 9312 }, 9313 { 9314 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01617", 9315 "text": " If the <code>pNext</code> chain does not include an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code>" 9316 }, 9317 { 9318 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01618", 9319 "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> bit set." 9320 }, 9321 { 9322 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01619", 9323 "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and the correct <code>planeAspect</code> for this plane in the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> structure attached to the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a>’s <code>pNext</code> chain" 9324 }, 9325 { 9326 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01620", 9327 "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and the correct <code>planeAspect</code> for this plane in the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> structure attached to the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a>’s <code>pNext</code> chain" 9328 }, 9329 { 9330 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01621", 9331 "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code> and the correct <code>planeAspect</code> for this plane in the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> structure attached to the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a>’s <code>pNext</code> chain" 9332 } 9333 ], 9334 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 9335 { 9336 "vuid": "VUID-VkBindImageMemoryInfo-image-01622", 9337 "text": " If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>image</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> equal to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 9338 } 9339 ], 9340 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [ 9341 { 9342 "vuid": "VUID-VkBindImageMemoryInfo-memory-01903", 9343 "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero." 9344 } 9345 ], 9346 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [ 9347 { 9348 "vuid": "VUID-VkBindImageMemoryInfo-memory-02630", 9349 "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero." 9350 }, 9351 { 9352 "vuid": "VUID-VkBindImageMemoryInfo-memory-02631", 9353 "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <code>VkImageCreateInfo</code>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created." 9354 } 9355 ], 9356 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [ 9357 { 9358 "vuid": "VUID-VkBindImageMemoryInfo-image-01623", 9359 "text": " If <code>image</code> was created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>image</code> equal to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 9360 } 9361 ], 9362 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 9363 { 9364 "vuid": "VUID-VkBindImageMemoryInfo-image-01624", 9365 "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" 9366 } 9367 ], 9368 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+!(VK_VERSION_1_1+VK_KHR_swapchain)+!(VK_KHR_device_group+VK_KHR_swapchain)": [ 9369 { 9370 "vuid": "VUID-VkBindImageMemoryInfo-memory-01625", 9371 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 9372 } 9373 ], 9374 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 9375 { 9376 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01626", 9377 "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, all instances of <code>memory</code> specified by <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated" 9378 }, 9379 { 9380 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01627", 9381 "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, and <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>splitInstanceBindRegionCount</code> is not zero, then <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code> bit set" 9382 }, 9383 { 9384 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01628", 9385 "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be valid rectangles contained within the dimensions of <code>image</code>" 9386 }, 9387 { 9388 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01629", 9389 "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, the union of the areas of all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> that correspond to the same instance of <code>image</code> <strong class=\"purple\">must</strong> cover the entire image." 9390 } 9391 ], 9392 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [ 9393 { 9394 "vuid": "VUID-VkBindImageMemoryInfo-image-01630", 9395 "text": " If <code>image</code> was created with a valid swapchain handle in <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>::<code>swapchain</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a valid instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>" 9396 }, 9397 { 9398 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01631", 9399 "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, <code>memory</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 9400 }, 9401 { 9402 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01632", 9403 "text": " If the <code>pNext</code> chain does not include an instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 9404 } 9405 ] 9406 }, 9407 "VkBindImageMemoryDeviceGroupInfo": { 9408 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 9409 { 9410 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01633", 9411 "text": " At least one of <code>deviceIndexCount</code> and <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> be zero." 9412 }, 9413 { 9414 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01634", 9415 "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device" 9416 }, 9417 { 9418 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-01635", 9419 "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices." 9420 }, 9421 { 9422 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-splitInstanceBindRegionCount-01636", 9423 "text": " <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device squared" 9424 }, 9425 { 9426 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-01637", 9427 "text": " Elements of <code>pSplitInstanceBindRegions</code> that correspond to the same instance of an image <strong class=\"purple\">must</strong> not overlap." 9428 }, 9429 { 9430 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01638", 9431 "text": " The <code>offset.x</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block width (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.width</code>) of all non-metadata aspects of the image" 9432 }, 9433 { 9434 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01639", 9435 "text": " The <code>offset.y</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block height (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.height</code>) of all non-metadata aspects of the image" 9436 }, 9437 { 9438 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01640", 9439 "text": " The <code>extent.width</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block width of all non-metadata aspects of the image, or else <code>extent.width</code> + <code>offset.x</code> <strong class=\"purple\">must</strong> equal the width of the image subresource" 9440 }, 9441 { 9442 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01641", 9443 "text": " The <code>extent.height</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else <code>extent.height</code><br> <code>offset.y</code> <strong class=\"purple\">must</strong> equal the width of the image subresource" 9444 }, 9445 { 9446 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-sType-sType", 9447 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO</code>" 9448 }, 9449 { 9450 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter", 9451 "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values" 9452 }, 9453 { 9454 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter", 9455 "text": " If <code>splitInstanceBindRegionCount</code> is not <code>0</code>, <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>splitInstanceBindRegionCount</code> <code>VkRect2D</code> structures" 9456 } 9457 ] 9458 }, 9459 "VkBindImageMemorySwapchainInfoKHR": { 9460 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [ 9461 { 9462 "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644", 9463 "text": " <code>imageIndex</code> <strong class=\"purple\">must</strong> be less than the number of images in <code>swapchain</code>" 9464 }, 9465 { 9466 "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType", 9467 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR</code>" 9468 }, 9469 { 9470 "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter", 9471 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle" 9472 } 9473 ] 9474 }, 9475 "VkBindImagePlaneMemoryInfo": { 9476 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 9477 { 9478 "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283", 9479 "text": " If the image’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 “<code>_2PLANE</code>” 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 “<code>_3PLANE</code>” formats.)" 9480 }, 9481 { 9482 "vuid": "VUID-VkBindImagePlaneMemoryInfo-None-01643", 9483 "text": " A single call to <a href=\"#vkBindImageMemory2\">vkBindImageMemory2</a> <strong class=\"purple\">must</strong> bind all or none of the planes of an image (i.e. bindings to all planes of an image <strong class=\"purple\">must</strong> be made in a single <a href=\"#vkBindImageMemory2\">vkBindImageMemory2</a> call), as separate bindings" 9484 }, 9485 { 9486 "vuid": "VUID-VkBindImagePlaneMemoryInfo-sType-sType", 9487 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO</code>" 9488 }, 9489 { 9490 "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter", 9491 "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value" 9492 } 9493 ], 9494 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [ 9495 { 9496 "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284", 9497 "text": " If the image’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’s <a href=\"#VkImageCreateInfo\"><code>format</code></a> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\"><code>drmFormatModifier</code></a>.)" 9498 } 9499 ] 9500 }, 9501 "vkCreateAccelerationStructureNV": { 9502 "(VK_NV_ray_tracing)": [ 9503 { 9504 "vuid": "VUID-vkCreateAccelerationStructureNV-device-parameter", 9505 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 9506 }, 9507 { 9508 "vuid": "VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter", 9509 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAccelerationStructureCreateInfoNV</code> structure" 9510 }, 9511 { 9512 "vuid": "VUID-vkCreateAccelerationStructureNV-pAllocator-parameter", 9513 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 9514 }, 9515 { 9516 "vuid": "VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter", 9517 "text": " <code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkAccelerationStructureNV</code> handle" 9518 } 9519 ] 9520 }, 9521 "VkAccelerationStructureCreateInfoNV": { 9522 "(VK_NV_ray_tracing)": [ 9523 { 9524 "vuid": "VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421", 9525 "text": " If <code>compactedSize</code> is not <code>0</code> then both <code>info.geometryCount</code> and <code>info.instanceCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 9526 }, 9527 { 9528 "vuid": "VUID-VkAccelerationStructureCreateInfoNV-sType-sType", 9529 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV</code>" 9530 }, 9531 { 9532 "vuid": "VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext", 9533 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9534 }, 9535 { 9536 "vuid": "VUID-VkAccelerationStructureCreateInfoNV-info-parameter", 9537 "text": " <code>info</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureInfoNV</code> structure" 9538 } 9539 ] 9540 }, 9541 "VkAccelerationStructureInfoNV": { 9542 "(VK_NV_ray_tracing)": [ 9543 { 9544 "vuid": "VUID-VkAccelerationStructureInfoNV-geometryCount-02422", 9545 "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>" 9546 }, 9547 { 9548 "vuid": "VUID-VkAccelerationStructureInfoNV-instanceCount-02423", 9549 "text": " <code>instanceCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxInstanceCount</code>" 9550 }, 9551 { 9552 "vuid": "VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424", 9553 "text": " The total number of triangles in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxTriangleCount</code>" 9554 }, 9555 { 9556 "vuid": "VUID-VkAccelerationStructureInfoNV-type-02425", 9557 "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV</code> then <code>geometryCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 9558 }, 9559 { 9560 "vuid": "VUID-VkAccelerationStructureInfoNV-type-02426", 9561 "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV</code> then <code>instanceCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 9562 }, 9563 { 9564 "vuid": "VUID-VkAccelerationStructureInfoNV-flags-02592", 9565 "text": " If <code>flags</code> has the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV</code> bit set, then it <strong class=\"purple\">must</strong> not have the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV</code> bit set" 9566 }, 9567 { 9568 "vuid": "VUID-VkAccelerationStructureInfoNV-sType-sType", 9569 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV</code>" 9570 }, 9571 { 9572 "vuid": "VUID-VkAccelerationStructureInfoNV-pNext-pNext", 9573 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9574 }, 9575 { 9576 "vuid": "VUID-VkAccelerationStructureInfoNV-type-parameter", 9577 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeNV\">VkAccelerationStructureTypeNV</a> value" 9578 }, 9579 { 9580 "vuid": "VUID-VkAccelerationStructureInfoNV-flags-parameter", 9581 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsNV\">VkBuildAccelerationStructureFlagBitsNV</a> values" 9582 }, 9583 { 9584 "vuid": "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter", 9585 "text": " If <code>geometryCount</code> is not <code>0</code>, <code>pGeometries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>geometryCount</code> valid <code>VkGeometryNV</code> structures" 9586 } 9587 ] 9588 }, 9589 "VkGeometryNV": { 9590 "(VK_NV_ray_tracing)": [ 9591 { 9592 "vuid": "VUID-VkGeometryNV-sType-sType", 9593 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_NV</code>" 9594 }, 9595 { 9596 "vuid": "VUID-VkGeometryNV-pNext-pNext", 9597 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9598 }, 9599 { 9600 "vuid": "VUID-VkGeometryNV-geometryType-parameter", 9601 "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeNV\">VkGeometryTypeNV</a> value" 9602 }, 9603 { 9604 "vuid": "VUID-VkGeometryNV-geometry-parameter", 9605 "text": " <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <code>VkGeometryDataNV</code> structure" 9606 }, 9607 { 9608 "vuid": "VUID-VkGeometryNV-flags-parameter", 9609 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsNV\">VkGeometryFlagBitsNV</a> values" 9610 } 9611 ] 9612 }, 9613 "VkGeometryDataNV": { 9614 "(VK_NV_ray_tracing)": [ 9615 { 9616 "vuid": "VUID-VkGeometryDataNV-triangles-parameter", 9617 "text": " <code>triangles</code> <strong class=\"purple\">must</strong> be a valid <code>VkGeometryTrianglesNV</code> structure" 9618 }, 9619 { 9620 "vuid": "VUID-VkGeometryDataNV-aabbs-parameter", 9621 "text": " <code>aabbs</code> <strong class=\"purple\">must</strong> be a valid <code>VkGeometryAABBNV</code> structure" 9622 } 9623 ] 9624 }, 9625 "VkGeometryTrianglesNV": { 9626 "(VK_NV_ray_tracing)": [ 9627 { 9628 "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02428", 9629 "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>vertexData</code>" 9630 }, 9631 { 9632 "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02429", 9633 "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the component size of <code>vertexFormat</code>" 9634 }, 9635 { 9636 "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-02430", 9637 "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be one of <code>VK_FORMAT_R32G32B32_SFLOAT</code>, <code>VK_FORMAT_R32G32_SFLOAT</code>, <code>VK_FORMAT_R16G16B16_SFLOAT</code>, <code>VK_FORMAT_R16G16_SFLOAT</code>, <code>VK_FORMAT_R16G16_SNORM</code>, or <code>VK_FORMAT_R16G16B16_SNORM</code>" 9638 }, 9639 { 9640 "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02431", 9641 "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>indexData</code>" 9642 }, 9643 { 9644 "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02432", 9645 "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <code>indexType</code>" 9646 }, 9647 { 9648 "vuid": "VUID-VkGeometryTrianglesNV-indexType-02433", 9649 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be <code>VK_INDEX_TYPE_UINT16</code>, <code>VK_INDEX_TYPE_UINT32</code>, or <code>VK_INDEX_TYPE_NONE_NV</code>" 9650 }, 9651 { 9652 "vuid": "VUID-VkGeometryTrianglesNV-indexData-02434", 9653 "text": " <code>indexData</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> if <code>indexType</code> is <code>VK_INDEX_TYPE_NONE_NV</code>" 9654 }, 9655 { 9656 "vuid": "VUID-VkGeometryTrianglesNV-indexData-02435", 9657 "text": " <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle if <code>indexType</code> is not <code>VK_INDEX_TYPE_NONE_NV</code>" 9658 }, 9659 { 9660 "vuid": "VUID-VkGeometryTrianglesNV-indexCount-02436", 9661 "text": " <code>indexCount</code> <strong class=\"purple\">must</strong> be <code>0</code> if <code>indexType</code> is <code>VK_INDEX_TYPE_NONE_NV</code>" 9662 }, 9663 { 9664 "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02437", 9665 "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>transformData</code>" 9666 }, 9667 { 9668 "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02438", 9669 "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>16</code>" 9670 }, 9671 { 9672 "vuid": "VUID-VkGeometryTrianglesNV-sType-sType", 9673 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV</code>" 9674 }, 9675 { 9676 "vuid": "VUID-VkGeometryTrianglesNV-pNext-pNext", 9677 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9678 }, 9679 { 9680 "vuid": "VUID-VkGeometryTrianglesNV-vertexData-parameter", 9681 "text": " If <code>vertexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>vertexData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 9682 }, 9683 { 9684 "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-parameter", 9685 "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 9686 }, 9687 { 9688 "vuid": "VUID-VkGeometryTrianglesNV-indexData-parameter", 9689 "text": " If <code>indexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 9690 }, 9691 { 9692 "vuid": "VUID-VkGeometryTrianglesNV-indexType-parameter", 9693 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value" 9694 }, 9695 { 9696 "vuid": "VUID-VkGeometryTrianglesNV-transformData-parameter", 9697 "text": " If <code>transformData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>transformData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 9698 }, 9699 { 9700 "vuid": "VUID-VkGeometryTrianglesNV-commonparent", 9701 "text": " Each of <code>indexData</code>, <code>transformData</code>, and <code>vertexData</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 9702 } 9703 ] 9704 }, 9705 "VkGeometryAABBNV": { 9706 "(VK_NV_ray_tracing)": [ 9707 { 9708 "vuid": "VUID-VkGeometryAABBNV-offset-02439", 9709 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>aabbData</code>" 9710 }, 9711 { 9712 "vuid": "VUID-VkGeometryAABBNV-offset-02440", 9713 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>" 9714 }, 9715 { 9716 "vuid": "VUID-VkGeometryAABBNV-stride-02441", 9717 "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>" 9718 }, 9719 { 9720 "vuid": "VUID-VkGeometryAABBNV-sType-sType", 9721 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV</code>" 9722 }, 9723 { 9724 "vuid": "VUID-VkGeometryAABBNV-pNext-pNext", 9725 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9726 }, 9727 { 9728 "vuid": "VUID-VkGeometryAABBNV-aabbData-parameter", 9729 "text": " If <code>aabbData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>aabbData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 9730 } 9731 ] 9732 }, 9733 "vkDestroyAccelerationStructureNV": { 9734 "(VK_NV_ray_tracing)": [ 9735 { 9736 "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-02442", 9737 "text": " All submitted commands that refer to <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have completed execution" 9738 }, 9739 { 9740 "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-02443", 9741 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 9742 }, 9743 { 9744 "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-02444", 9745 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9746 }, 9747 { 9748 "vuid": "VUID-vkDestroyAccelerationStructureNV-device-parameter", 9749 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 9750 }, 9751 { 9752 "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parameter", 9753 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle" 9754 }, 9755 { 9756 "vuid": "VUID-vkDestroyAccelerationStructureNV-pAllocator-parameter", 9757 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 9758 }, 9759 { 9760 "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent", 9761 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 9762 } 9763 ] 9764 }, 9765 "vkGetAccelerationStructureMemoryRequirementsNV": { 9766 "(VK_NV_ray_tracing)": [ 9767 { 9768 "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter", 9769 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 9770 }, 9771 { 9772 "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter", 9773 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAccelerationStructureMemoryRequirementsInfoNV</code> structure" 9774 }, 9775 { 9776 "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pMemoryRequirements-parameter", 9777 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements2KHR</code> structure" 9778 } 9779 ] 9780 }, 9781 "VkAccelerationStructureMemoryRequirementsInfoNV": { 9782 "(VK_NV_ray_tracing)": [ 9783 { 9784 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-sType-sType", 9785 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV</code>" 9786 }, 9787 { 9788 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-pNext-pNext", 9789 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9790 }, 9791 { 9792 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter", 9793 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureMemoryRequirementsTypeNV\">VkAccelerationStructureMemoryRequirementsTypeNV</a> value" 9794 }, 9795 { 9796 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter", 9797 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle" 9798 } 9799 ] 9800 }, 9801 "vkBindAccelerationStructureMemoryNV": { 9802 "(VK_NV_ray_tracing)": [ 9803 { 9804 "vuid": "VUID-vkBindAccelerationStructureMemoryNV-device-parameter", 9805 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 9806 }, 9807 { 9808 "vuid": "VUID-vkBindAccelerationStructureMemoryNV-pBindInfos-parameter", 9809 "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindAccelerationStructureMemoryInfoNV</code> structures" 9810 }, 9811 { 9812 "vuid": "VUID-vkBindAccelerationStructureMemoryNV-bindInfoCount-arraylength", 9813 "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 9814 } 9815 ] 9816 }, 9817 "VkBindAccelerationStructureMemoryInfoNV": { 9818 "(VK_NV_ray_tracing)": [ 9819 { 9820 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-02450", 9821 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> not already be backed by a memory object" 9822 }, 9823 { 9824 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-02451", 9825 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>" 9826 }, 9827 { 9828 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-02593", 9829 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code>" 9830 }, 9831 { 9832 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-02594", 9833 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code>" 9834 }, 9835 { 9836 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-size-02595", 9837 "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>" 9838 }, 9839 { 9840 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-sType-sType", 9841 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV</code>" 9842 }, 9843 { 9844 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pNext-pNext", 9845 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9846 }, 9847 { 9848 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-parameter", 9849 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle" 9850 }, 9851 { 9852 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-parameter", 9853 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle" 9854 }, 9855 { 9856 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pDeviceIndices-parameter", 9857 "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values" 9858 }, 9859 { 9860 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-commonparent", 9861 "text": " Both of <code>accelerationStructure</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 9862 } 9863 ] 9864 }, 9865 "vkGetAccelerationStructureHandleNV": { 9866 "(VK_NV_ray_tracing)": [ 9867 { 9868 "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-02240", 9869 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be large enough to contain the result of the query, as described above" 9870 }, 9871 { 9872 "vuid": "VUID-vkGetAccelerationStructureHandleNV-device-parameter", 9873 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 9874 }, 9875 { 9876 "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter", 9877 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle" 9878 }, 9879 { 9880 "vuid": "VUID-vkGetAccelerationStructureHandleNV-pData-parameter", 9881 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes" 9882 }, 9883 { 9884 "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength", 9885 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 9886 }, 9887 { 9888 "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent", 9889 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 9890 } 9891 ] 9892 }, 9893 "vkCreateSampler": { 9894 "core": [ 9895 { 9896 "vuid": "VUID-vkCreateSampler-device-parameter", 9897 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 9898 }, 9899 { 9900 "vuid": "VUID-vkCreateSampler-pCreateInfo-parameter", 9901 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSamplerCreateInfo</code> structure" 9902 }, 9903 { 9904 "vuid": "VUID-vkCreateSampler-pAllocator-parameter", 9905 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 9906 }, 9907 { 9908 "vuid": "VUID-vkCreateSampler-pSampler-parameter", 9909 "text": " <code>pSampler</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSampler</code> handle" 9910 } 9911 ] 9912 }, 9913 "VkSamplerCreateInfo": { 9914 "core": [ 9915 { 9916 "vuid": "VUID-VkSamplerCreateInfo-mipLodBias-01069", 9917 "text": " The absolute value of <code>mipLodBias</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxSamplerLodBias</code>" 9918 }, 9919 { 9920 "vuid": "VUID-VkSamplerCreateInfo-maxLod-01973", 9921 "text": " <code>maxLod</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>minLod</code>" 9922 }, 9923 { 9924 "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01070", 9925 "text": " If the <a href=\"#features-samplerAnisotropy\">anisotropic sampling</a> feature is not enabled, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 9926 }, 9927 { 9928 "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01071", 9929 "text": " If <code>anisotropyEnable</code> is <code>VK_TRUE</code>, <code>maxAnisotropy</code> <strong class=\"purple\">must</strong> be between <code>1.0</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxSamplerAnisotropy</code>, inclusive" 9930 }, 9931 { 9932 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01072", 9933 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal" 9934 }, 9935 { 9936 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01073", 9937 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>mipmapMode</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_MIPMAP_MODE_NEAREST</code>" 9938 }, 9939 { 9940 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01074", 9941 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minLod</code> and <code>maxLod</code> <strong class=\"purple\">must</strong> be zero" 9942 }, 9943 { 9944 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01075", 9945 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>addressModeU</code> and <code>addressModeV</code> <strong class=\"purple\">must</strong> each be either <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code> or <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>" 9946 }, 9947 { 9948 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01076", 9949 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 9950 }, 9951 { 9952 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01077", 9953 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>compareEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 9954 }, 9955 { 9956 "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01078", 9957 "text": " If any of <code>addressModeU</code>, <code>addressModeV</code> or <code>addressModeW</code> are <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>, <code>borderColor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBorderColor\">VkBorderColor</a> value" 9958 }, 9959 { 9960 "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01079", 9961 "text": " If the <code><a href=\"#VK_KHR_sampler_mirror_clamp_to_edge\">VK_KHR_sampler_mirror_clamp_to_edge</a></code> extension is not enabled, <code>addressModeU</code>, <code>addressModeV</code> and <code>addressModeW</code> <strong class=\"purple\">must</strong> not be <code>VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE</code>" 9962 }, 9963 { 9964 "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01080", 9965 "text": " If <code>compareEnable</code> is <code>VK_TRUE</code>, <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value" 9966 }, 9967 { 9968 "vuid": "VUID-VkSamplerCreateInfo-sType-sType", 9969 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO</code>" 9970 }, 9971 { 9972 "vuid": "VUID-VkSamplerCreateInfo-pNext-pNext", 9973 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSamplerReductionModeCreateInfoEXT\">VkSamplerReductionModeCreateInfoEXT</a> or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>" 9974 }, 9975 { 9976 "vuid": "VUID-VkSamplerCreateInfo-sType-unique", 9977 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 9978 }, 9979 { 9980 "vuid": "VUID-VkSamplerCreateInfo-flags-parameter", 9981 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSamplerCreateFlagBits\">VkSamplerCreateFlagBits</a> values" 9982 }, 9983 { 9984 "vuid": "VUID-VkSamplerCreateInfo-magFilter-parameter", 9985 "text": " <code>magFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value" 9986 }, 9987 { 9988 "vuid": "VUID-VkSamplerCreateInfo-minFilter-parameter", 9989 "text": " <code>minFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value" 9990 }, 9991 { 9992 "vuid": "VUID-VkSamplerCreateInfo-mipmapMode-parameter", 9993 "text": " <code>mipmapMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerMipmapMode\">VkSamplerMipmapMode</a> value" 9994 }, 9995 { 9996 "vuid": "VUID-VkSamplerCreateInfo-addressModeU-parameter", 9997 "text": " <code>addressModeU</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value" 9998 }, 9999 { 10000 "vuid": "VUID-VkSamplerCreateInfo-addressModeV-parameter", 10001 "text": " <code>addressModeV</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value" 10002 }, 10003 { 10004 "vuid": "VUID-VkSamplerCreateInfo-addressModeW-parameter", 10005 "text": " <code>addressModeW</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value" 10006 } 10007 ], 10008 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 10009 { 10010 "vuid": "VUID-VkSamplerCreateInfo-minFilter-01645", 10011 "text": " If <a href=\"#samplers-YCbCr-conversion\">sampler Y’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’C<sub>B</sub>C<sub>R</sub> conversion’s <code>chromaFilter</code>" 10012 }, 10013 { 10014 "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01646", 10015 "text": " If <a href=\"#samplers-YCbCr-conversion\">sampler Y’C<sub>B</sub>C<sub>R</sub> conversion</a> is enabled, <code>addressModeU</code>, <code>addressModeV</code>, and <code>addressModeW</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>, and <code>unnormalizedCoordinates</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 10016 } 10017 ], 10018 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_sampler_filter_minmax)": [ 10019 { 10020 "vuid": "VUID-VkSamplerCreateInfo-None-01647", 10021 "text": " The sampler reduction mode <strong class=\"purple\">must</strong> be set to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT</code> if <a href=\"#samplers-YCbCr-conversion\">sampler Y’C<sub>B</sub>C<sub>R</sub> conversion</a> is enabled" 10022 } 10023 ], 10024 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 10025 { 10026 "vuid": "VUID-VkSamplerCreateInfo-magFilter-01081", 10027 "text": " If either <code>magFilter</code> or <code>minFilter</code> is <code>VK_FILTER_CUBIC_EXT</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 10028 } 10029 ], 10030 "(VK_IMG_filter_cubic+VK_EXT_sampler_filter_minmax)+!(VK_EXT_filter_cubic)": [ 10031 { 10032 "vuid": "VUID-VkSamplerCreateInfo-magFilter-01422", 10033 "text": " If either <code>magFilter</code> or <code>minFilter</code> is <code>VK_FILTER_CUBIC_EXT</code>, the <code>reductionMode</code> member of <a href=\"#VkSamplerReductionModeCreateInfoEXT\">VkSamplerReductionModeCreateInfoEXT</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT</code>" 10034 } 10035 ], 10036 "(VK_EXT_sampler_filter_minmax)": [ 10037 { 10038 "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01423", 10039 "text": " If <code>compareEnable</code> is <code>VK_TRUE</code>, the <code>reductionMode</code> member of <a href=\"#VkSamplerReductionModeCreateInfoEXT\">VkSamplerReductionModeCreateInfoEXT</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT</code>" 10040 } 10041 ], 10042 "(VK_EXT_fragment_density_map)": [ 10043 { 10044 "vuid": "VUID-VkSamplerCreateInfo-flags-02574", 10045 "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal." 10046 }, 10047 { 10048 "vuid": "VUID-VkSamplerCreateInfo-flags-02575", 10049 "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>mipmapMode</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_MIPMAP_MODE_NEAREST</code>." 10050 }, 10051 { 10052 "vuid": "VUID-VkSamplerCreateInfo-flags-02576", 10053 "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>minLod</code> and <code>maxLod</code> <strong class=\"purple\">must</strong> be zero." 10054 }, 10055 { 10056 "vuid": "VUID-VkSamplerCreateInfo-flags-02577", 10057 "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>addressModeU</code> and <code>addressModeV</code> <strong class=\"purple\">must</strong> each be either <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code> or <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>." 10058 }, 10059 { 10060 "vuid": "VUID-VkSamplerCreateInfo-flags-02578", 10061 "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>." 10062 }, 10063 { 10064 "vuid": "VUID-VkSamplerCreateInfo-flags-02579", 10065 "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>compareEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>." 10066 }, 10067 { 10068 "vuid": "VUID-VkSamplerCreateInfo-flags-02580", 10069 "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>unnormalizedCoordinates</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>." 10070 } 10071 ] 10072 }, 10073 "VkSamplerReductionModeCreateInfoEXT": { 10074 "(VK_EXT_sampler_filter_minmax)": [ 10075 { 10076 "vuid": "VUID-VkSamplerReductionModeCreateInfoEXT-sType-sType", 10077 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT</code>" 10078 }, 10079 { 10080 "vuid": "VUID-VkSamplerReductionModeCreateInfoEXT-reductionMode-parameter", 10081 "text": " <code>reductionMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerReductionModeEXT\">VkSamplerReductionModeEXT</a> value" 10082 } 10083 ] 10084 }, 10085 "vkDestroySampler": { 10086 "core": [ 10087 { 10088 "vuid": "VUID-vkDestroySampler-sampler-01082", 10089 "text": " All submitted commands that refer to <code>sampler</code> <strong class=\"purple\">must</strong> have completed execution" 10090 }, 10091 { 10092 "vuid": "VUID-vkDestroySampler-sampler-01083", 10093 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>sampler</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 10094 }, 10095 { 10096 "vuid": "VUID-vkDestroySampler-sampler-01084", 10097 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>sampler</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 10098 }, 10099 { 10100 "vuid": "VUID-vkDestroySampler-device-parameter", 10101 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 10102 }, 10103 { 10104 "vuid": "VUID-vkDestroySampler-sampler-parameter", 10105 "text": " If <code>sampler</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampler</code> handle" 10106 }, 10107 { 10108 "vuid": "VUID-vkDestroySampler-pAllocator-parameter", 10109 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 10110 }, 10111 { 10112 "vuid": "VUID-vkDestroySampler-sampler-parent", 10113 "text": " If <code>sampler</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 10114 } 10115 ] 10116 }, 10117 "VkSamplerYcbcrConversionInfo": { 10118 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 10119 { 10120 "vuid": "VUID-VkSamplerYcbcrConversionInfo-sType-sType", 10121 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO</code>" 10122 }, 10123 { 10124 "vuid": "VUID-VkSamplerYcbcrConversionInfo-conversion-parameter", 10125 "text": " <code>conversion</code> <strong class=\"purple\">must</strong> be a valid <code>VkSamplerYcbcrConversion</code> handle" 10126 } 10127 ] 10128 }, 10129 "vkCreateSamplerYcbcrConversion": { 10130 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 10131 { 10132 "vuid": "VUID-vkCreateSamplerYcbcrConversion-None-01648", 10133 "text": " The <a href=\"#features-sampler-YCbCr-conversion\">sampler Y’C<sub>B</sub>C<sub>R</sub> conversion feature</a> <strong class=\"purple\">must</strong> be enabled" 10134 }, 10135 { 10136 "vuid": "VUID-vkCreateSamplerYcbcrConversion-device-parameter", 10137 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 10138 }, 10139 { 10140 "vuid": "VUID-vkCreateSamplerYcbcrConversion-pCreateInfo-parameter", 10141 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSamplerYcbcrConversionCreateInfo</code> structure" 10142 }, 10143 { 10144 "vuid": "VUID-vkCreateSamplerYcbcrConversion-pAllocator-parameter", 10145 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 10146 }, 10147 { 10148 "vuid": "VUID-vkCreateSamplerYcbcrConversion-pYcbcrConversion-parameter", 10149 "text": " <code>pYcbcrConversion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSamplerYcbcrConversion</code> handle" 10150 } 10151 ] 10152 }, 10153 "VkSamplerYcbcrConversionCreateInfo": { 10154 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [ 10155 { 10156 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01649", 10157 "text": " <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>" 10158 } 10159 ], 10160 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [ 10161 { 10162 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01904", 10163 "text": " If an external format conversion is being created, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>, otherwise it <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>." 10164 } 10165 ], 10166 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 10167 { 10168 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01650", 10169 "text": " <code>format</code> <strong class=\"purple\">must</strong> support <code>VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT</code> or <code>VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT</code>" 10170 }, 10171 { 10172 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01651", 10173 "text": " If the format does not support <code>VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT</code>, <code>xChromaOffset</code> and <code>yChromaOffset</code> <strong class=\"purple\">must</strong> not be <code>VK_CHROMA_LOCATION_COSITED_EVEN</code>" 10174 }, 10175 { 10176 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652", 10177 "text": " If the format does not support <code>VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT</code>, <code>xChromaOffset</code> and <code>yChromaOffset</code> <strong class=\"purple\">must</strong> not be <code>VK_CHROMA_LOCATION_MIDPOINT</code>" 10178 }, 10179 { 10180 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01653", 10181 "text": " <code>format</code> <strong class=\"purple\">must</strong> represent unsigned normalized values (i.e. the format must be a <code>UNORM</code> format)" 10182 }, 10183 { 10184 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02581", 10185 "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.g</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>" 10186 }, 10187 { 10188 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02582", 10189 "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.a</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>, <code>VK_COMPONENT_SWIZZLE_ONE</code>, or <code>VK_COMPONENT_SWIZZLE_ZERO</code>" 10190 }, 10191 { 10192 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02583", 10193 "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.r</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code> or <code>VK_COMPONENT_SWIZZLE_B</code>" 10194 }, 10195 { 10196 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02584", 10197 "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.b</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code> or <code>VK_COMPONENT_SWIZZLE_R</code>" 10198 }, 10199 { 10200 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02585", 10201 "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, and if either <code>components.r</code> or <code>components.b</code> is <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>, both values <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>" 10202 }, 10203 { 10204 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-01655", 10205 "text": " If <code>ycbcrModel</code> is not <code>VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY</code>, then <code>components.r</code>, <code>components.g</code>, and <code>components.b</code> <strong class=\"purple\">must</strong> correspond to channels of the <code>format</code>; that is, <code>components.r</code>, <code>components.g</code>, and <code>components.b</code> <strong class=\"purple\">must</strong> not be <code>VK_COMPONENT_SWIZZLE_ZERO</code> or <code>VK_COMPONENT_SWIZZLE_ONE</code>, and <strong class=\"purple\">must</strong> not correspond to a channel which contains zero or one as a consequence of <a href=\"#textures-conversion-to-rgba\">conversion to RGBA</a>" 10206 }, 10207 { 10208 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656", 10209 "text": " If the format does not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT</code>, <code>forceExplicitReconstruction</code> <strong class=\"purple\">must</strong> be FALSE" 10210 }, 10211 { 10212 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657", 10213 "text": " If the format does not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT</code>, <code>chromaFilter</code> <strong class=\"purple\">must</strong> be <code>VK_FILTER_NEAREST</code>" 10214 }, 10215 { 10216 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-sType-sType", 10217 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO</code>" 10218 }, 10219 { 10220 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-pNext-pNext", 10221 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>" 10222 }, 10223 { 10224 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter", 10225 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 10226 }, 10227 { 10228 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-parameter", 10229 "text": " <code>ycbcrModel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrModelConversion\">VkSamplerYcbcrModelConversion</a> value" 10230 }, 10231 { 10232 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-parameter", 10233 "text": " <code>ycbcrRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrRange\">VkSamplerYcbcrRange</a> value" 10234 }, 10235 { 10236 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-parameter", 10237 "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <code>VkComponentMapping</code> structure" 10238 }, 10239 { 10240 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-parameter", 10241 "text": " <code>xChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value" 10242 }, 10243 { 10244 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-yChromaOffset-parameter", 10245 "text": " <code>yChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value" 10246 }, 10247 { 10248 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-parameter", 10249 "text": " <code>chromaFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value" 10250 } 10251 ] 10252 }, 10253 "vkDestroySamplerYcbcrConversion": { 10254 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 10255 { 10256 "vuid": "VUID-vkDestroySamplerYcbcrConversion-device-parameter", 10257 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 10258 }, 10259 { 10260 "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parameter", 10261 "text": " If <code>ycbcrConversion</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>ycbcrConversion</code> <strong class=\"purple\">must</strong> be a valid <code>VkSamplerYcbcrConversion</code> handle" 10262 }, 10263 { 10264 "vuid": "VUID-vkDestroySamplerYcbcrConversion-pAllocator-parameter", 10265 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 10266 }, 10267 { 10268 "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parent", 10269 "text": " If <code>ycbcrConversion</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 10270 } 10271 ] 10272 }, 10273 "vkCreateDescriptorSetLayout": { 10274 "core": [ 10275 { 10276 "vuid": "VUID-vkCreateDescriptorSetLayout-device-parameter", 10277 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 10278 }, 10279 { 10280 "vuid": "VUID-vkCreateDescriptorSetLayout-pCreateInfo-parameter", 10281 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorSetLayoutCreateInfo</code> structure" 10282 }, 10283 { 10284 "vuid": "VUID-vkCreateDescriptorSetLayout-pAllocator-parameter", 10285 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 10286 }, 10287 { 10288 "vuid": "VUID-vkCreateDescriptorSetLayout-pSetLayout-parameter", 10289 "text": " <code>pSetLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorSetLayout</code> handle" 10290 } 10291 ] 10292 }, 10293 "VkDescriptorSetLayoutCreateInfo": { 10294 "core": [ 10295 { 10296 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-binding-00279", 10297 "text": " The <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a>::<code>binding</code> members of the elements of the <code>pBindings</code> array <strong class=\"purple\">must</strong> each have different values." 10298 }, 10299 { 10300 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-sType-sType", 10301 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO</code>" 10302 }, 10303 { 10304 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext", 10305 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetLayoutBindingFlagsCreateInfoEXT\">VkDescriptorSetLayoutBindingFlagsCreateInfoEXT</a>" 10306 }, 10307 { 10308 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter", 10309 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorSetLayoutCreateFlagBits\">VkDescriptorSetLayoutCreateFlagBits</a> values" 10310 }, 10311 { 10312 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter", 10313 "text": " If <code>bindingCount</code> is not <code>0</code>, <code>pBindings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <code>VkDescriptorSetLayoutBinding</code> structures" 10314 } 10315 ], 10316 "(VK_KHR_push_descriptor)": [ 10317 { 10318 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00280", 10319 "text": " If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindings</code> <strong class=\"purple\">must</strong> not have a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>" 10320 }, 10321 { 10322 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00281", 10323 "text": " If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then the total number of elements of all bindings <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>::<code>maxPushDescriptors</code>" 10324 } 10325 ], 10326 "(VK_KHR_push_descriptor)+(VK_EXT_inline_uniform_block)": [ 10327 { 10328 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-02208", 10329 "text": " If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindings</code> <strong class=\"purple\">must</strong> not have a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>" 10330 } 10331 ], 10332 "(VK_EXT_descriptor_indexing)": [ 10333 { 10334 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-03000", 10335 "text": " If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code> bit set, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code>" 10336 }, 10337 { 10338 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001", 10339 "text": " If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code> bit set, then all bindings <strong class=\"purple\">must</strong> not have <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>" 10340 } 10341 ] 10342 }, 10343 "VkDescriptorSetLayoutBinding": { 10344 "core": [ 10345 { 10346 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-00282", 10347 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>descriptorCount</code> is not <code>0</code> and <code>pImmutableSamplers</code> is not <code>NULL</code>, <code>pImmutableSamplers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkSampler</code> handles" 10348 }, 10349 { 10350 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283", 10351 "text": " If <code>descriptorCount</code> is not <code>0</code>, <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values" 10352 }, 10353 { 10354 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-01510", 10355 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> and <code>descriptorCount</code> is not <code>0</code>, then <code>stageFlags</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>" 10356 }, 10357 { 10358 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter", 10359 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value" 10360 } 10361 ], 10362 "(VK_EXT_inline_uniform_block)": [ 10363 { 10364 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02209", 10365 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> then <code>descriptorCount</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 10366 }, 10367 { 10368 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02210", 10369 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> then <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxInlineUniformBlockSize</code>" 10370 } 10371 ] 10372 }, 10373 "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT": { 10374 "(VK_EXT_descriptor_indexing)": [ 10375 { 10376 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-bindingCount-03002", 10377 "text": " If <code>bindingCount</code> is not zero, <code>bindingCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>bindingCount</code>" 10378 }, 10379 { 10380 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-03004", 10381 "text": " If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>, then all other elements of <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>pBindings</code> <strong class=\"purple\">must</strong> have a smaller value of <code>binding</code>" 10382 }, 10383 { 10384 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUniformBufferUpdateAfterBind-03005", 10385 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingUniformBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>" 10386 }, 10387 { 10388 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingSampledImageUpdateAfterBind-03006", 10389 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingSampledImageUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, or <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>" 10390 }, 10391 { 10392 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageImageUpdateAfterBind-03007", 10393 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingStorageImageUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>" 10394 }, 10395 { 10396 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageBufferUpdateAfterBind-03008", 10397 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingStorageBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>" 10398 }, 10399 { 10400 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUniformTexelBufferUpdateAfterBind-03009", 10401 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingUniformTexelBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>" 10402 }, 10403 { 10404 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageTexelBufferUpdateAfterBind-03010", 10405 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingStorageTexelBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>" 10406 }, 10407 { 10408 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-None-03011", 10409 "text": " All bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>" 10410 }, 10411 { 10412 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUpdateUnusedWhilePending-03012", 10413 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingUpdateUnusedWhilePending</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT</code>" 10414 }, 10415 { 10416 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingPartiallyBound-03013", 10417 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingPartiallyBound</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT</code>" 10418 }, 10419 { 10420 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingVariableDescriptorCount-03014", 10421 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingVariableDescriptorCount</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>" 10422 }, 10423 { 10424 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-03015", 10425 "text": " If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>, that element’s <code>descriptorType</code> <strong class=\"purple\">must</strong> not be <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>" 10426 }, 10427 { 10428 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-sType-sType", 10429 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT</code>" 10430 }, 10431 { 10432 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-parameter", 10433 "text": " If <code>bindingCount</code> is not <code>0</code>, and <code>pBindingFlags</code> is not <code>NULL</code>, <code>pBindingFlags</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid combinations of <a href=\"#VkDescriptorBindingFlagBitsEXT\">VkDescriptorBindingFlagBitsEXT</a> values" 10434 } 10435 ], 10436 "(VK_EXT_descriptor_indexing)+(VK_KHR_push_descriptor)": [ 10437 { 10438 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-flags-03003", 10439 "text": " If <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>flags</code> includes <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>, <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT</code>, or <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>" 10440 } 10441 ], 10442 "(VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [ 10443 { 10444 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingInlineUniformBlockUpdateAfterBind-02211", 10445 "text": " If <a href=\"#VkPhysicalDeviceInlineUniformBlockFeaturesEXT\">VkPhysicalDeviceInlineUniformBlockFeaturesEXT</a>::<code>descriptorBindingInlineUniformBlockUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>" 10446 } 10447 ] 10448 }, 10449 "vkGetDescriptorSetLayoutSupport": { 10450 "(VK_VERSION_1_1,VK_KHR_maintenance3)": [ 10451 { 10452 "vuid": "VUID-vkGetDescriptorSetLayoutSupport-device-parameter", 10453 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 10454 }, 10455 { 10456 "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pCreateInfo-parameter", 10457 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorSetLayoutCreateInfo</code> structure" 10458 }, 10459 { 10460 "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pSupport-parameter", 10461 "text": " <code>pSupport</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorSetLayoutSupport</code> structure" 10462 } 10463 ] 10464 }, 10465 "VkDescriptorSetLayoutSupport": { 10466 "(VK_VERSION_1_1,VK_KHR_maintenance3)": [ 10467 { 10468 "vuid": "VUID-VkDescriptorSetLayoutSupport-sType-sType", 10469 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT</code>" 10470 }, 10471 { 10472 "vuid": "VUID-VkDescriptorSetLayoutSupport-pNext-pNext", 10473 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountLayoutSupportEXT\">VkDescriptorSetVariableDescriptorCountLayoutSupportEXT</a>" 10474 } 10475 ] 10476 }, 10477 "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT": { 10478 "(VK_EXT_descriptor_indexing)": [ 10479 { 10480 "vuid": "VUID-VkDescriptorSetVariableDescriptorCountLayoutSupportEXT-sType-sType", 10481 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT</code>" 10482 } 10483 ] 10484 }, 10485 "vkDestroyDescriptorSetLayout": { 10486 "core": [ 10487 { 10488 "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00284", 10489 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 10490 }, 10491 { 10492 "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00285", 10493 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 10494 }, 10495 { 10496 "vuid": "VUID-vkDestroyDescriptorSetLayout-device-parameter", 10497 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 10498 }, 10499 { 10500 "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parameter", 10501 "text": " If <code>descriptorSetLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle" 10502 }, 10503 { 10504 "vuid": "VUID-vkDestroyDescriptorSetLayout-pAllocator-parameter", 10505 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 10506 }, 10507 { 10508 "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parent", 10509 "text": " If <code>descriptorSetLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 10510 } 10511 ] 10512 }, 10513 "vkCreatePipelineLayout": { 10514 "core": [ 10515 { 10516 "vuid": "VUID-vkCreatePipelineLayout-device-parameter", 10517 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 10518 }, 10519 { 10520 "vuid": "VUID-vkCreatePipelineLayout-pCreateInfo-parameter", 10521 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineLayoutCreateInfo</code> structure" 10522 }, 10523 { 10524 "vuid": "VUID-vkCreatePipelineLayout-pAllocator-parameter", 10525 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 10526 }, 10527 { 10528 "vuid": "VUID-vkCreatePipelineLayout-pPipelineLayout-parameter", 10529 "text": " <code>pPipelineLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPipelineLayout</code> handle" 10530 } 10531 ] 10532 }, 10533 "VkPipelineLayoutCreateInfo": { 10534 "core": [ 10535 { 10536 "vuid": "VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286", 10537 "text": " <code>setLayoutCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxBoundDescriptorSets</code>" 10538 }, 10539 { 10540 "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-00292", 10541 "text": " Any two elements of <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> not include the same stage in <code>stageFlags</code>" 10542 }, 10543 { 10544 "vuid": "VUID-VkPipelineLayoutCreateInfo-sType-sType", 10545 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO</code>" 10546 }, 10547 { 10548 "vuid": "VUID-VkPipelineLayoutCreateInfo-pNext-pNext", 10549 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 10550 }, 10551 { 10552 "vuid": "VUID-VkPipelineLayoutCreateInfo-flags-zerobitmask", 10553 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 10554 }, 10555 { 10556 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter", 10557 "text": " If <code>setLayoutCount</code> is not <code>0</code>, <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>setLayoutCount</code> valid <code>VkDescriptorSetLayout</code> handles" 10558 }, 10559 { 10560 "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-parameter", 10561 "text": " If <code>pushConstantRangeCount</code> is not <code>0</code>, <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pushConstantRangeCount</code> valid <code>VkPushConstantRange</code> structures" 10562 } 10563 ], 10564 "!(VK_EXT_descriptor_indexing)": [ 10565 { 10566 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00287", 10567 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSamplers</code>" 10568 }, 10569 { 10570 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00288", 10571 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorUniformBuffers</code>" 10572 }, 10573 { 10574 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00289", 10575 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageBuffers</code>" 10576 }, 10577 { 10578 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00290", 10579 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSampledImages</code>" 10580 }, 10581 { 10582 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00291", 10583 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageImages</code>" 10584 }, 10585 { 10586 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01676", 10587 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorInputAttachments</code>" 10588 }, 10589 { 10590 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01677", 10591 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSamplers</code>" 10592 }, 10593 { 10594 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01678", 10595 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffers</code>" 10596 }, 10597 { 10598 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01679", 10599 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffersDynamic</code>" 10600 }, 10601 { 10602 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01680", 10603 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffers</code>" 10604 }, 10605 { 10606 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01681", 10607 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffersDynamic</code>" 10608 }, 10609 { 10610 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01682", 10611 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSampledImages</code>" 10612 }, 10613 { 10614 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01683", 10615 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageImages</code>" 10616 }, 10617 { 10618 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01684", 10619 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetInputAttachments</code>" 10620 } 10621 ], 10622 "!(VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [ 10623 { 10624 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02212", 10625 "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxPerStageDescriptorInlineUniformBlocks</code>" 10626 }, 10627 { 10628 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02213", 10629 "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxDescriptorSetInlineUniformBlocks</code>" 10630 } 10631 ], 10632 "(VK_EXT_descriptor_indexing)": [ 10633 { 10634 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03016", 10635 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSamplers</code>" 10636 }, 10637 { 10638 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03017", 10639 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorUniformBuffers</code>" 10640 }, 10641 { 10642 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03018", 10643 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageBuffers</code>" 10644 }, 10645 { 10646 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03019", 10647 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSampledImages</code>" 10648 }, 10649 { 10650 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03020", 10651 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageImages</code>" 10652 }, 10653 { 10654 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03021", 10655 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorInputAttachments</code>" 10656 }, 10657 { 10658 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03022", 10659 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindSamplers</code>" 10660 }, 10661 { 10662 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03023", 10663 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindUniformBuffers</code>" 10664 }, 10665 { 10666 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03024", 10667 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageBuffers</code>" 10668 }, 10669 { 10670 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03025", 10671 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindSampledImages</code>" 10672 }, 10673 { 10674 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03026", 10675 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageImages</code>" 10676 }, 10677 { 10678 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03027", 10679 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindInputAttachments</code>" 10680 }, 10681 { 10682 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03028", 10683 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSamplers</code>" 10684 }, 10685 { 10686 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03029", 10687 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffers</code>" 10688 }, 10689 { 10690 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03030", 10691 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffersDynamic</code>" 10692 }, 10693 { 10694 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03031", 10695 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffers</code>" 10696 }, 10697 { 10698 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03032", 10699 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffersDynamic</code>" 10700 }, 10701 { 10702 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03033", 10703 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSampledImages</code>" 10704 }, 10705 { 10706 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03034", 10707 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageImages</code>" 10708 }, 10709 { 10710 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03035", 10711 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetInputAttachments</code>" 10712 }, 10713 { 10714 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03036", 10715 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindSamplers</code>" 10716 }, 10717 { 10718 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03037", 10719 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindUniformBuffers</code>" 10720 }, 10721 { 10722 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03038", 10723 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindUniformBuffersDynamic</code>" 10724 }, 10725 { 10726 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03039", 10727 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindStorageBuffers</code>" 10728 }, 10729 { 10730 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03040", 10731 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindStorageBuffersDynamic</code>" 10732 }, 10733 { 10734 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03041", 10735 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindSampledImages</code>" 10736 }, 10737 { 10738 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03042", 10739 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindStorageImages</code>" 10740 }, 10741 { 10742 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03043", 10743 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindInputAttachments</code>" 10744 } 10745 ], 10746 "(VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [ 10747 { 10748 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02214", 10749 "text": " The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxPerStageDescriptorInlineUniformBlocks</code>" 10750 }, 10751 { 10752 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02215", 10753 "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks</code>" 10754 }, 10755 { 10756 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02216", 10757 "text": " The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxDescriptorSetInlineUniformBlocks</code>" 10758 }, 10759 { 10760 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02217", 10761 "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindInlineUniformBlocks</code>" 10762 } 10763 ], 10764 "(VK_KHR_push_descriptor)": [ 10765 { 10766 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293", 10767 "text": " <code>pSetLayouts</code> <strong class=\"purple\">must</strong> not contain more than one descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code> set" 10768 } 10769 ], 10770 "(VK_NV_ray_tracing)": [ 10771 { 10772 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02381", 10773 "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxDescriptorSetAccelerationStructures</code>" 10774 } 10775 ] 10776 }, 10777 "VkPushConstantRange": { 10778 "core": [ 10779 { 10780 "vuid": "VUID-VkPushConstantRange-offset-00294", 10781 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>" 10782 }, 10783 { 10784 "vuid": "VUID-VkPushConstantRange-offset-00295", 10785 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 10786 }, 10787 { 10788 "vuid": "VUID-VkPushConstantRange-size-00296", 10789 "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 10790 }, 10791 { 10792 "vuid": "VUID-VkPushConstantRange-size-00297", 10793 "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 10794 }, 10795 { 10796 "vuid": "VUID-VkPushConstantRange-size-00298", 10797 "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code> minus <code>offset</code>" 10798 }, 10799 { 10800 "vuid": "VUID-VkPushConstantRange-stageFlags-parameter", 10801 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values" 10802 }, 10803 { 10804 "vuid": "VUID-VkPushConstantRange-stageFlags-requiredbitmask", 10805 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 10806 } 10807 ] 10808 }, 10809 "vkDestroyPipelineLayout": { 10810 "core": [ 10811 { 10812 "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00299", 10813 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipelineLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 10814 }, 10815 { 10816 "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00300", 10817 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipelineLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 10818 }, 10819 { 10820 "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-02004", 10821 "text": " <code>pipelineLayout</code> <strong class=\"purple\">must</strong> not have been passed to any <code>vkCmd*</code> command for any command buffers that are still in the <a href=\"#commandbuffers-lifecycle\">recording state</a> when <code>vkDestroyPipelineLayout</code> is called" 10822 }, 10823 { 10824 "vuid": "VUID-vkDestroyPipelineLayout-device-parameter", 10825 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 10826 }, 10827 { 10828 "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parameter", 10829 "text": " If <code>pipelineLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle" 10830 }, 10831 { 10832 "vuid": "VUID-vkDestroyPipelineLayout-pAllocator-parameter", 10833 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 10834 }, 10835 { 10836 "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parent", 10837 "text": " If <code>pipelineLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 10838 } 10839 ] 10840 }, 10841 "vkCreateDescriptorPool": { 10842 "core": [ 10843 { 10844 "vuid": "VUID-vkCreateDescriptorPool-device-parameter", 10845 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 10846 }, 10847 { 10848 "vuid": "VUID-vkCreateDescriptorPool-pCreateInfo-parameter", 10849 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorPoolCreateInfo</code> structure" 10850 }, 10851 { 10852 "vuid": "VUID-vkCreateDescriptorPool-pAllocator-parameter", 10853 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 10854 }, 10855 { 10856 "vuid": "VUID-vkCreateDescriptorPool-pDescriptorPool-parameter", 10857 "text": " <code>pDescriptorPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorPool</code> handle" 10858 } 10859 ] 10860 }, 10861 "VkDescriptorPoolCreateInfo": { 10862 "core": [ 10863 { 10864 "vuid": "VUID-VkDescriptorPoolCreateInfo-maxSets-00301", 10865 "text": " <code>maxSets</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 10866 }, 10867 { 10868 "vuid": "VUID-VkDescriptorPoolCreateInfo-sType-sType", 10869 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO</code>" 10870 }, 10871 { 10872 "vuid": "VUID-VkDescriptorPoolCreateInfo-pNext-pNext", 10873 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorPoolInlineUniformBlockCreateInfoEXT\">VkDescriptorPoolInlineUniformBlockCreateInfoEXT</a>" 10874 }, 10875 { 10876 "vuid": "VUID-VkDescriptorPoolCreateInfo-flags-parameter", 10877 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorPoolCreateFlagBits\">VkDescriptorPoolCreateFlagBits</a> values" 10878 }, 10879 { 10880 "vuid": "VUID-VkDescriptorPoolCreateInfo-pPoolSizes-parameter", 10881 "text": " <code>pPoolSizes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>poolSizeCount</code> valid <code>VkDescriptorPoolSize</code> structures" 10882 }, 10883 { 10884 "vuid": "VUID-VkDescriptorPoolCreateInfo-poolSizeCount-arraylength", 10885 "text": " <code>poolSizeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 10886 } 10887 ] 10888 }, 10889 "VkDescriptorPoolInlineUniformBlockCreateInfoEXT": { 10890 "(VK_EXT_inline_uniform_block)": [ 10891 { 10892 "vuid": "VUID-VkDescriptorPoolInlineUniformBlockCreateInfoEXT-sType-sType", 10893 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT</code>" 10894 } 10895 ] 10896 }, 10897 "VkDescriptorPoolSize": { 10898 "core": [ 10899 { 10900 "vuid": "VUID-VkDescriptorPoolSize-descriptorCount-00302", 10901 "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 10902 }, 10903 { 10904 "vuid": "VUID-VkDescriptorPoolSize-type-parameter", 10905 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value" 10906 } 10907 ], 10908 "(VK_EXT_inline_uniform_block)": [ 10909 { 10910 "vuid": "VUID-VkDescriptorPoolSize-type-02218", 10911 "text": " If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> then <code>descriptorCount</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 10912 } 10913 ] 10914 }, 10915 "vkDestroyDescriptorPool": { 10916 "core": [ 10917 { 10918 "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00303", 10919 "text": " All submitted commands that refer to <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution" 10920 }, 10921 { 10922 "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00304", 10923 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 10924 }, 10925 { 10926 "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00305", 10927 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 10928 }, 10929 { 10930 "vuid": "VUID-vkDestroyDescriptorPool-device-parameter", 10931 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 10932 }, 10933 { 10934 "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parameter", 10935 "text": " If <code>descriptorPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle" 10936 }, 10937 { 10938 "vuid": "VUID-vkDestroyDescriptorPool-pAllocator-parameter", 10939 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 10940 }, 10941 { 10942 "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parent", 10943 "text": " If <code>descriptorPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 10944 } 10945 ] 10946 }, 10947 "vkAllocateDescriptorSets": { 10948 "core": [ 10949 { 10950 "vuid": "VUID-vkAllocateDescriptorSets-device-parameter", 10951 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 10952 }, 10953 { 10954 "vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo-parameter", 10955 "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorSetAllocateInfo</code> structure" 10956 }, 10957 { 10958 "vuid": "VUID-vkAllocateDescriptorSets-pDescriptorSets-parameter", 10959 "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo</code>::descriptorSetCount <code>VkDescriptorSet</code> handles" 10960 } 10961 ] 10962 }, 10963 "VkDescriptorSetAllocateInfo": { 10964 "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 10965 { 10966 "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-00306", 10967 "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> not be greater than the number of sets that are currently available for allocation in <code>descriptorPool</code>" 10968 }, 10969 { 10970 "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-00307", 10971 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts" 10972 } 10973 ], 10974 "(VK_KHR_push_descriptor)": [ 10975 { 10976 "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308", 10977 "text": " Each element of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code> set" 10978 } 10979 ], 10980 "(VK_EXT_descriptor_indexing)": [ 10981 { 10982 "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-03044", 10983 "text": " If any element of <code>pSetLayouts</code> was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set, <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set" 10984 } 10985 ], 10986 "core": [ 10987 { 10988 "vuid": "VUID-VkDescriptorSetAllocateInfo-sType-sType", 10989 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO</code>" 10990 }, 10991 { 10992 "vuid": "VUID-VkDescriptorSetAllocateInfo-pNext-pNext", 10993 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountAllocateInfoEXT\">VkDescriptorSetVariableDescriptorCountAllocateInfoEXT</a>" 10994 }, 10995 { 10996 "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-parameter", 10997 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle" 10998 }, 10999 { 11000 "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-parameter", 11001 "text": " <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <code>VkDescriptorSetLayout</code> handles" 11002 }, 11003 { 11004 "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-arraylength", 11005 "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 11006 }, 11007 { 11008 "vuid": "VUID-VkDescriptorSetAllocateInfo-commonparent", 11009 "text": " Both of <code>descriptorPool</code>, and the elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 11010 } 11011 ] 11012 }, 11013 "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT": { 11014 "(VK_EXT_descriptor_indexing)": [ 11015 { 11016 "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-descriptorSetCount-03045", 11017 "text": " If <code>descriptorSetCount</code> is not zero, <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkDescriptorSetAllocateInfo\">VkDescriptorSetAllocateInfo</a>::<code>descriptorSetCount</code>" 11018 }, 11019 { 11020 "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-pSetLayouts-03046", 11021 "text": " If <a href=\"#VkDescriptorSetAllocateInfo\">VkDescriptorSetAllocateInfo</a>::<code>pSetLayouts</code>[i] has a variable descriptor count binding, then <code>pDescriptorCounts</code>[i] <strong class=\"purple\">must</strong> be less than or equal to the descriptor count specified for that binding when the descriptor set layout was created." 11022 }, 11023 { 11024 "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-sType-sType", 11025 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT</code>" 11026 }, 11027 { 11028 "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-pDescriptorCounts-parameter", 11029 "text": " If <code>descriptorSetCount</code> is not <code>0</code>, <code>pDescriptorCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> <code>uint32_t</code> values" 11030 } 11031 ] 11032 }, 11033 "vkFreeDescriptorSets": { 11034 "core": [ 11035 { 11036 "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00309", 11037 "text": " All submitted commands that refer to any element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have completed execution" 11038 }, 11039 { 11040 "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00310", 11041 "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> <code>VkDescriptorSet</code> handles, each element of which <strong class=\"purple\">must</strong> either be a valid handle or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 11042 }, 11043 { 11044 "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00311", 11045 "text": " Each valid handle in <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been allocated from <code>descriptorPool</code>" 11046 }, 11047 { 11048 "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-00312", 11049 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT</code> flag" 11050 }, 11051 { 11052 "vuid": "VUID-vkFreeDescriptorSets-device-parameter", 11053 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 11054 }, 11055 { 11056 "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parameter", 11057 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle" 11058 }, 11059 { 11060 "vuid": "VUID-vkFreeDescriptorSets-descriptorSetCount-arraylength", 11061 "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 11062 }, 11063 { 11064 "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parent", 11065 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 11066 }, 11067 { 11068 "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-parent", 11069 "text": " Each element of <code>pDescriptorSets</code> that is a valid handle <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>descriptorPool</code>" 11070 } 11071 ] 11072 }, 11073 "vkResetDescriptorPool": { 11074 "core": [ 11075 { 11076 "vuid": "VUID-vkResetDescriptorPool-descriptorPool-00313", 11077 "text": " All uses of <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution" 11078 }, 11079 { 11080 "vuid": "VUID-vkResetDescriptorPool-device-parameter", 11081 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 11082 }, 11083 { 11084 "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parameter", 11085 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle" 11086 }, 11087 { 11088 "vuid": "VUID-vkResetDescriptorPool-flags-zerobitmask", 11089 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 11090 }, 11091 { 11092 "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parent", 11093 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 11094 } 11095 ] 11096 }, 11097 "vkUpdateDescriptorSets": { 11098 "!(VK_EXT_descriptor_indexing)": [ 11099 { 11100 "vuid": "VUID-vkUpdateDescriptorSets-dstSet-00314", 11101 "text": " The <code>dstSet</code> member of each element of <code>pDescriptorWrites</code> or <code>pDescriptorCopies</code> <strong class=\"purple\">must</strong> not be used by any command that was recorded to a command buffer which is in the <a href=\"#commandbuffers-lifecycle\">pending state</a>." 11102 } 11103 ], 11104 "(VK_EXT_descriptor_indexing)": [ 11105 { 11106 "vuid": "VUID-vkUpdateDescriptorSets-None-03047", 11107 "text": " Descriptor bindings updated by this command which were created without the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code> or <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT</code> bits set <strong class=\"purple\">must</strong> not be used by any command that was recorded to a command buffer which is in the <a href=\"#commandbuffers-lifecycle\">pending state</a>." 11108 } 11109 ], 11110 "core": [ 11111 { 11112 "vuid": "VUID-vkUpdateDescriptorSets-device-parameter", 11113 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 11114 }, 11115 { 11116 "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-parameter", 11117 "text": " If <code>descriptorWriteCount</code> is not <code>0</code>, <code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <code>VkWriteDescriptorSet</code> structures" 11118 }, 11119 { 11120 "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorCopies-parameter", 11121 "text": " If <code>descriptorCopyCount</code> is not <code>0</code>, <code>pDescriptorCopies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCopyCount</code> valid <code>VkCopyDescriptorSet</code> structures" 11122 } 11123 ] 11124 }, 11125 "VkWriteDescriptorSet": { 11126 "core": [ 11127 { 11128 "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00315", 11129 "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be less than or equal to the maximum value of <code>binding</code> of all <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a> structures specified when <code>dstSet</code>’s descriptor set layout was created" 11130 }, 11131 { 11132 "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00316", 11133 "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a binding with a non-zero <code>descriptorCount</code>" 11134 }, 11135 { 11136 "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00317", 11137 "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> have identical <code>descriptorType</code> and <code>stageFlags</code>." 11138 }, 11139 { 11140 "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00318", 11141 "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> all either use immutable samplers or <strong class=\"purple\">must</strong> all not use immutable samplers." 11142 }, 11143 { 11144 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00319", 11145 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> match the type of <code>dstBinding</code> within <code>dstSet</code>" 11146 }, 11147 { 11148 "vuid": "VUID-VkWriteDescriptorSet-dstSet-00320", 11149 "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle" 11150 }, 11151 { 11152 "vuid": "VUID-VkWriteDescriptorSet-dstArrayElement-00321", 11153 "text": " The sum of <code>dstArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding specified by <code>dstBinding</code>, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>" 11154 }, 11155 { 11156 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00322", 11157 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkDescriptorImageInfo</code> structures" 11158 }, 11159 { 11160 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00323", 11161 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, <code>pTexelBufferView</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkBufferView</code> handles" 11162 }, 11163 { 11164 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00324", 11165 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, <code>pBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkDescriptorBufferInfo</code> structures" 11166 }, 11167 { 11168 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00325", 11169 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>dstSet</code> was not allocated with a layout that included immutable samplers for <code>dstBinding</code> with <code>descriptorType</code>, the <code>sampler</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampler</code> object" 11170 }, 11171 { 11172 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00326", 11173 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>imageView</code> and <code>imageLayout</code> members of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> and <a href=\"#VkImageLayout\">VkImageLayout</a>, respectively" 11174 }, 11175 { 11176 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01946", 11177 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, then the <code>imageView</code> member of each <code>pImageInfo</code> element <strong class=\"purple\">must</strong> have been created without a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain" 11178 }, 11179 { 11180 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01947", 11181 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and if any element of <code>pImageInfo</code> has a <code>imageView</code> member that was created with a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain, then <code>dstSet</code> <strong class=\"purple\">must</strong> have been allocated with a layout that included immutable samplers for <code>dstBinding</code>" 11182 }, 11183 { 11184 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01948", 11185 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>dstSet</code> was allocated with a layout that included immutable samplers for <code>dstBinding</code>, then the <code>imageView</code> member of each element of <code>pImageInfo</code> which corresponds to an immutable sampler that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y’C<sub>B</sub>C<sub>R</sub> conversion</a> <strong class=\"purple\">must</strong> have been created with a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain with an <em>identically defined</em> <code>VkSamplerYcbcrConversionInfo</code> to the corresponding immutable sampler" 11186 }, 11187 { 11188 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01402", 11189 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, for each descriptor that will be accessed via load or store operations the <code>imageLayout</code> member for corresponding elements of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_GENERAL</code>" 11190 }, 11191 { 11192 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00327", 11193 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, the <code>offset</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minUniformBufferOffsetAlignment</code>" 11194 }, 11195 { 11196 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00328", 11197 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, the <code>offset</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minStorageBufferOffsetAlignment</code>" 11198 }, 11199 { 11200 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00329", 11201 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, and the <code>buffer</code> member of any element of <code>pBufferInfo</code> is the handle of a non-sparse buffer, then that buffer <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 11202 }, 11203 { 11204 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00330", 11205 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, the <code>buffer</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT</code> set" 11206 }, 11207 { 11208 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00331", 11209 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, the <code>buffer</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_BUFFER_BIT</code> set" 11210 }, 11211 { 11212 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00332", 11213 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, the <code>range</code> member of each element of <code>pBufferInfo</code>, or the effective range if <code>range</code> is <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxUniformBufferRange</code>" 11214 }, 11215 { 11216 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00333", 11217 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, the <code>range</code> member of each element of <code>pBufferInfo</code>, or the effective range if <code>range</code> is <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxStorageBufferRange</code>" 11218 }, 11219 { 11220 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00334", 11221 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code>, the <code>VkBuffer</code> that each element of <code>pTexelBufferView</code> was created from <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code> set" 11222 }, 11223 { 11224 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00335", 11225 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, the <code>VkBuffer</code> that each element of <code>pTexelBufferView</code> was created from <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code> set" 11226 }, 11227 { 11228 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00336", 11229 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle" 11230 }, 11231 { 11232 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00337", 11233 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> set" 11234 }, 11235 { 11236 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01403", 11237 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the <code>imageLayout</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a member of the list given in <a href=\"#descriptorsets-sampledimage\">Sampled Image</a> or <a href=\"#descriptorsets-combinedimagesampler\">Combined Image Sampler</a>, corresponding to its type" 11238 }, 11239 { 11240 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00338", 11241 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set" 11242 }, 11243 { 11244 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00339", 11245 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_STORAGE_BIT</code> set" 11246 }, 11247 { 11248 "vuid": "VUID-VkWriteDescriptorSet-sType-sType", 11249 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET</code>" 11250 }, 11251 { 11252 "vuid": "VUID-VkWriteDescriptorSet-pNext-pNext", 11253 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkWriteDescriptorSetAccelerationStructureNV\">VkWriteDescriptorSetAccelerationStructureNV</a> or <a href=\"#VkWriteDescriptorSetInlineUniformBlockEXT\">VkWriteDescriptorSetInlineUniformBlockEXT</a>" 11254 }, 11255 { 11256 "vuid": "VUID-VkWriteDescriptorSet-sType-unique", 11257 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 11258 }, 11259 { 11260 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-parameter", 11261 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value" 11262 }, 11263 { 11264 "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-arraylength", 11265 "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 11266 }, 11267 { 11268 "vuid": "VUID-VkWriteDescriptorSet-commonparent", 11269 "text": " Both of <code>dstSet</code>, and the elements of <code>pTexelBufferView</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 11270 } 11271 ], 11272 "(VK_EXT_inline_uniform_block)": [ 11273 { 11274 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02219", 11275 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 11276 }, 11277 { 11278 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02220", 11279 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 11280 }, 11281 { 11282 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02221", 11283 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkWriteDescriptorSetInlineUniformBlockEXT\">VkWriteDescriptorSetInlineUniformBlockEXT</a> structure whose <code>dataSize</code> member equals <code>descriptorCount</code>" 11284 } 11285 ], 11286 "(VK_NV_ray_tracing)": [ 11287 { 11288 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02382", 11289 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkWriteDescriptorSetAccelerationStructureNV\">VkWriteDescriptorSetAccelerationStructureNV</a> structure whose <code>accelerationStructureCount</code> member equals <code>descriptorCount</code>" 11290 } 11291 ], 11292 "(VK_EXT_descriptor_indexing)": [ 11293 { 11294 "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-03048", 11295 "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> have identical <a href=\"#VkDescriptorBindingFlagBitsEXT\">VkDescriptorBindingFlagBitsEXT</a>." 11296 } 11297 ] 11298 }, 11299 "VkDescriptorBufferInfo": { 11300 "core": [ 11301 { 11302 "vuid": "VUID-VkDescriptorBufferInfo-offset-00340", 11303 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>" 11304 }, 11305 { 11306 "vuid": "VUID-VkDescriptorBufferInfo-range-00341", 11307 "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 11308 }, 11309 { 11310 "vuid": "VUID-VkDescriptorBufferInfo-range-00342", 11311 "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code> minus <code>offset</code>" 11312 }, 11313 { 11314 "vuid": "VUID-VkDescriptorBufferInfo-buffer-parameter", 11315 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 11316 } 11317 ] 11318 }, 11319 "VkDescriptorImageInfo": { 11320 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 11321 { 11322 "vuid": "VUID-VkDescriptorImageInfo-imageView-00343", 11323 "text": " <code>imageView</code> <strong class=\"purple\">must</strong> not be 2D or 2D array image view created from a 3D image" 11324 } 11325 ], 11326 "core": [ 11327 { 11328 "vuid": "VUID-VkDescriptorImageInfo-imageView-01976", 11329 "text": " If <code>imageView</code> is created from a depth/stencil image, the <code>aspectMask</code> used to create the <code>imageView</code> <strong class=\"purple\">must</strong> include either <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> but not both." 11330 }, 11331 { 11332 "vuid": "VUID-VkDescriptorImageInfo-imageLayout-00344", 11333 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> match the actual <a href=\"#VkImageLayout\">VkImageLayout</a> of each subresource accessible from <code>imageView</code> at the time this descriptor is accessed as defined by the <a href=\"#resources-image-layouts-matching-rule\">image layout matching rules</a>" 11334 }, 11335 { 11336 "vuid": "VUID-VkDescriptorImageInfo-commonparent", 11337 "text": " Both of <code>imageView</code>, and <code>sampler</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 11338 } 11339 ], 11340 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 11341 { 11342 "vuid": "VUID-VkDescriptorImageInfo-sampler-01564", 11343 "text": " If <code>sampler</code> is used and the <a href=\"#VkFormat\">VkFormat</a> of the image is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, the image <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, and the <code>aspectMask</code> of the <code>imageView</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or (for three-plane formats only) <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" 11344 } 11345 ] 11346 }, 11347 "VkWriteDescriptorSetInlineUniformBlockEXT": { 11348 "(VK_EXT_inline_uniform_block)": [ 11349 { 11350 "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-02222", 11351 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 11352 }, 11353 { 11354 "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-sType-sType", 11355 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT</code>" 11356 }, 11357 { 11358 "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-pData-parameter", 11359 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes" 11360 }, 11361 { 11362 "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-arraylength", 11363 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 11364 } 11365 ] 11366 }, 11367 "VkWriteDescriptorSetAccelerationStructureNV": { 11368 "(VK_NV_ray_tracing)": [ 11369 { 11370 "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-02236", 11371 "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be equal to <code>descriptorCount</code> in the extended structure" 11372 }, 11373 { 11374 "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-sType-sType", 11375 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV</code>" 11376 }, 11377 { 11378 "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-parameter", 11379 "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <code>VkAccelerationStructureNV</code> handles" 11380 }, 11381 { 11382 "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-arraylength", 11383 "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 11384 } 11385 ] 11386 }, 11387 "VkCopyDescriptorSet": { 11388 "core": [ 11389 { 11390 "vuid": "VUID-VkCopyDescriptorSet-srcBinding-00345", 11391 "text": " <code>srcBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>srcSet</code>" 11392 }, 11393 { 11394 "vuid": "VUID-VkCopyDescriptorSet-srcArrayElement-00346", 11395 "text": " The sum of <code>srcArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding specified by <code>srcBinding</code>, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>" 11396 }, 11397 { 11398 "vuid": "VUID-VkCopyDescriptorSet-dstBinding-00347", 11399 "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>dstSet</code>" 11400 }, 11401 { 11402 "vuid": "VUID-VkCopyDescriptorSet-dstArrayElement-00348", 11403 "text": " The sum of <code>dstArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding specified by <code>dstBinding</code>, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>" 11404 }, 11405 { 11406 "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02632", 11407 "text": " The type of <code>dstBinding</code> within <code>dstSet</code> <strong class=\"purple\">must</strong> be equal to the type of <code>srcBinding</code> within <code>srcSet</code>" 11408 }, 11409 { 11410 "vuid": "VUID-VkCopyDescriptorSet-srcSet-00349", 11411 "text": " If <code>srcSet</code> is equal to <code>dstSet</code>, then the source and destination ranges of descriptors <strong class=\"purple\">must</strong> not overlap, where the ranges <strong class=\"purple\">may</strong> include array elements from consecutive bindings as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>" 11412 }, 11413 { 11414 "vuid": "VUID-VkCopyDescriptorSet-sType-sType", 11415 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET</code>" 11416 }, 11417 { 11418 "vuid": "VUID-VkCopyDescriptorSet-pNext-pNext", 11419 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 11420 }, 11421 { 11422 "vuid": "VUID-VkCopyDescriptorSet-srcSet-parameter", 11423 "text": " <code>srcSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle" 11424 }, 11425 { 11426 "vuid": "VUID-VkCopyDescriptorSet-dstSet-parameter", 11427 "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle" 11428 }, 11429 { 11430 "vuid": "VUID-VkCopyDescriptorSet-commonparent", 11431 "text": " Both of <code>dstSet</code>, and <code>srcSet</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 11432 } 11433 ], 11434 "(VK_EXT_inline_uniform_block)": [ 11435 { 11436 "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02223", 11437 "text": " If the descriptor type of the descriptor set binding specified by <code>srcBinding</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>srcArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 11438 }, 11439 { 11440 "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02224", 11441 "text": " If the descriptor type of the descriptor set binding specified by <code>dstBinding</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 11442 }, 11443 { 11444 "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02225", 11445 "text": " If the descriptor type of the descriptor set binding specified by either <code>srcBinding</code> or <code>dstBinding</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 11446 } 11447 ], 11448 "(VK_EXT_descriptor_indexing)": [ 11449 { 11450 "vuid": "VUID-VkCopyDescriptorSet-srcSet-01918", 11451 "text": " If <code>srcSet</code>’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>’s layout <strong class=\"purple\">must</strong> also have been created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set" 11452 }, 11453 { 11454 "vuid": "VUID-VkCopyDescriptorSet-srcSet-01919", 11455 "text": " If <code>srcSet</code>’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>’s layout <strong class=\"purple\">must</strong> also have been created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set" 11456 }, 11457 { 11458 "vuid": "VUID-VkCopyDescriptorSet-srcSet-01920", 11459 "text": " If the descriptor pool from which <code>srcSet</code> was allocated was created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set, then the descriptor pool from which <code>dstSet</code> was allocated <strong class=\"purple\">must</strong> also have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set" 11460 }, 11461 { 11462 "vuid": "VUID-VkCopyDescriptorSet-srcSet-01921", 11463 "text": " If the descriptor pool from which <code>srcSet</code> was allocated was created without the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set, then the descriptor pool from which <code>dstSet</code> was allocated <strong class=\"purple\">must</strong> also have been created without the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set" 11464 } 11465 ] 11466 }, 11467 "vkCreateDescriptorUpdateTemplate": { 11468 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ 11469 { 11470 "vuid": "VUID-vkCreateDescriptorUpdateTemplate-device-parameter", 11471 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 11472 }, 11473 { 11474 "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pCreateInfo-parameter", 11475 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorUpdateTemplateCreateInfo</code> structure" 11476 }, 11477 { 11478 "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pAllocator-parameter", 11479 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 11480 }, 11481 { 11482 "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pDescriptorUpdateTemplate-parameter", 11483 "text": " <code>pDescriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorUpdateTemplate</code> handle" 11484 } 11485 ] 11486 }, 11487 "VkDescriptorUpdateTemplateCreateInfo": { 11488 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ 11489 { 11490 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00350", 11491 "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET</code>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle" 11492 }, 11493 { 11494 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-sType-sType", 11495 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO</code>" 11496 }, 11497 { 11498 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pNext-pNext", 11499 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 11500 }, 11501 { 11502 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-flags-zerobitmask", 11503 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 11504 }, 11505 { 11506 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pDescriptorUpdateEntries-parameter", 11507 "text": " <code>pDescriptorUpdateEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorUpdateEntryCount</code> valid <code>VkDescriptorUpdateTemplateEntry</code> structures" 11508 }, 11509 { 11510 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-parameter", 11511 "text": " <code>templateType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplateType\">VkDescriptorUpdateTemplateType</a> value" 11512 }, 11513 { 11514 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorSetLayout-parameter", 11515 "text": " If <code>descriptorSetLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle" 11516 }, 11517 { 11518 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorUpdateEntryCount-arraylength", 11519 "text": " <code>descriptorUpdateEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 11520 }, 11521 { 11522 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-commonparent", 11523 "text": " Both of <code>descriptorSetLayout</code>, and <code>pipelineLayout</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 11524 } 11525 ], 11526 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_KHR_push_descriptor)": [ 11527 { 11528 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00351", 11529 "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 11530 }, 11531 { 11532 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00352", 11533 "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle" 11534 }, 11535 { 11536 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00353", 11537 "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>set</code> <strong class=\"purple\">must</strong> be the unique set number in the pipeline layout that uses a descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>" 11538 } 11539 ] 11540 }, 11541 "VkDescriptorUpdateTemplateEntry": { 11542 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ 11543 { 11544 "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstBinding-00354", 11545 "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a valid binding in the descriptor set layout implicitly specified when using a descriptor update template to update descriptors." 11546 }, 11547 { 11548 "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstArrayElement-00355", 11549 "text": " <code>dstArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding implicitly specified when using a descriptor update template to update descriptors, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>" 11550 }, 11551 { 11552 "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter", 11553 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value" 11554 } 11555 ], 11556 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_EXT_inline_uniform_block)": [ 11557 { 11558 "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226", 11559 "text": " If <code>descriptor</code> type is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 11560 }, 11561 { 11562 "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02227", 11563 "text": " If <code>descriptor</code> type is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 11564 } 11565 ] 11566 }, 11567 "vkDestroyDescriptorUpdateTemplate": { 11568 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ 11569 { 11570 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356", 11571 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 11572 }, 11573 { 11574 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357", 11575 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 11576 }, 11577 { 11578 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-device-parameter", 11579 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 11580 }, 11581 { 11582 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parameter", 11583 "text": " If <code>descriptorUpdateTemplate</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorUpdateTemplate</code> handle" 11584 }, 11585 { 11586 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-pAllocator-parameter", 11587 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 11588 }, 11589 { 11590 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parent", 11591 "text": " If <code>descriptorUpdateTemplate</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 11592 } 11593 ] 11594 }, 11595 "vkUpdateDescriptorSetWithTemplate": { 11596 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ 11597 { 11598 "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-pData-01685", 11599 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory that contains one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplate\">vkCreateDescriptorUpdateTemplate</a>" 11600 }, 11601 { 11602 "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-device-parameter", 11603 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 11604 }, 11605 { 11606 "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-parameter", 11607 "text": " <code>descriptorSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle" 11608 }, 11609 { 11610 "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parameter", 11611 "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorUpdateTemplate</code> handle" 11612 }, 11613 { 11614 "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parent", 11615 "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 11616 } 11617 ] 11618 }, 11619 "vkCmdBindDescriptorSets": { 11620 "core": [ 11621 { 11622 "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358", 11623 "text": " Each element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been allocated with a <code>VkDescriptorSetLayout</code> that matches (is the same as, or identically defined as) the <code>VkDescriptorSetLayout</code> at set <em>n</em> in <code>layout</code>, where <em>n</em> is the sum of <code>firstSet</code> and the index into <code>pDescriptorSets</code>" 11624 }, 11625 { 11626 "vuid": "VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359", 11627 "text": " <code>dynamicOffsetCount</code> <strong class=\"purple\">must</strong> be equal to the total number of dynamic descriptors in <code>pDescriptorSets</code>" 11628 }, 11629 { 11630 "vuid": "VUID-vkCmdBindDescriptorSets-firstSet-00360", 11631 "text": " The sum of <code>firstSet</code> and <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPipelineLayoutCreateInfo</code>::<code>setLayoutCount</code> provided when <code>layout</code> was created" 11632 }, 11633 { 11634 "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361", 11635 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be supported by the <code>commandBuffer</code>’s parent <code>VkCommandPool</code>’s queue family" 11636 }, 11637 { 11638 "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01971", 11639 "text": " Each element of <code>pDynamicOffsets</code> which corresponds to a descriptor binding with type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minUniformBufferOffsetAlignment</code>" 11640 }, 11641 { 11642 "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01972", 11643 "text": " Each element of <code>pDynamicOffsets</code> which corresponds to a descriptor binding with type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minStorageBufferOffsetAlignment</code>" 11644 }, 11645 { 11646 "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979", 11647 "text": " For each dynamic uniform or storage buffer binding in <code>pDescriptorSets</code>, the sum of the effective offset, as defined above, and the range of the binding <strong class=\"purple\">must</strong> be less than or equal to the size of the buffer" 11648 }, 11649 { 11650 "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-parameter", 11651 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 11652 }, 11653 { 11654 "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter", 11655 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 11656 }, 11657 { 11658 "vuid": "VUID-vkCmdBindDescriptorSets-layout-parameter", 11659 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle" 11660 }, 11661 { 11662 "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter", 11663 "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <code>VkDescriptorSet</code> handles" 11664 }, 11665 { 11666 "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter", 11667 "text": " If <code>dynamicOffsetCount</code> is not <code>0</code>, <code>pDynamicOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dynamicOffsetCount</code> <code>uint32_t</code> values" 11668 }, 11669 { 11670 "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-recording", 11671 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 11672 }, 11673 { 11674 "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-cmdpool", 11675 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 11676 }, 11677 { 11678 "vuid": "VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength", 11679 "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 11680 }, 11681 { 11682 "vuid": "VUID-vkCmdBindDescriptorSets-commonparent", 11683 "text": " Each of <code>commandBuffer</code>, <code>layout</code>, and the elements of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 11684 } 11685 ] 11686 }, 11687 "vkCmdPushDescriptorSetKHR": { 11688 "(VK_KHR_push_descriptor)": [ 11689 { 11690 "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-00363", 11691 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be supported by the <code>commandBuffer</code>’s parent <code>VkCommandPool</code>’s queue family" 11692 }, 11693 { 11694 "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00364", 11695 "text": " <code>set</code> <strong class=\"purple\">must</strong> be less than <code>VkPipelineLayoutCreateInfo</code>::<code>setLayoutCount</code> provided when <code>layout</code> was created" 11696 }, 11697 { 11698 "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00365", 11699 "text": " <code>set</code> <strong class=\"purple\">must</strong> be the unique set number in the pipeline layout that uses a descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>" 11700 }, 11701 { 11702 "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter", 11703 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 11704 }, 11705 { 11706 "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter", 11707 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 11708 }, 11709 { 11710 "vuid": "VUID-vkCmdPushDescriptorSetKHR-layout-parameter", 11711 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle" 11712 }, 11713 { 11714 "vuid": "VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter", 11715 "text": " <code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <code>VkWriteDescriptorSet</code> structures" 11716 }, 11717 { 11718 "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-recording", 11719 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 11720 }, 11721 { 11722 "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-cmdpool", 11723 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 11724 }, 11725 { 11726 "vuid": "VUID-vkCmdPushDescriptorSetKHR-descriptorWriteCount-arraylength", 11727 "text": " <code>descriptorWriteCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 11728 }, 11729 { 11730 "vuid": "VUID-vkCmdPushDescriptorSetKHR-commonparent", 11731 "text": " Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 11732 } 11733 ] 11734 }, 11735 "vkCmdPushDescriptorSetWithTemplateKHR": { 11736 "(VK_KHR_push_descriptor)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ 11737 { 11738 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-00366", 11739 "text": " The <code>pipelineBindPoint</code> specified during the creation of the descriptor update template <strong class=\"purple\">must</strong> be supported by the <code>commandBuffer</code>’s parent <code>VkCommandPool</code>’s queue family" 11740 }, 11741 { 11742 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686", 11743 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory that contains one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplateKHR\">vkCreateDescriptorUpdateTemplateKHR</a>" 11744 }, 11745 { 11746 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter", 11747 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 11748 }, 11749 { 11750 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter", 11751 "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorUpdateTemplate</code> handle" 11752 }, 11753 { 11754 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter", 11755 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle" 11756 }, 11757 { 11758 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-recording", 11759 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 11760 }, 11761 { 11762 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool", 11763 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 11764 }, 11765 { 11766 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent", 11767 "text": " Each of <code>commandBuffer</code>, <code>descriptorUpdateTemplate</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 11768 } 11769 ] 11770 }, 11771 "vkCmdPushConstants": { 11772 "core": [ 11773 { 11774 "vuid": "VUID-vkCmdPushConstants-offset-01795", 11775 "text": " For each byte in the range specified by <code>offset</code> and <code>size</code> and for each shader stage in <code>stageFlags</code>, there <strong class=\"purple\">must</strong> be a push constant range in <code>layout</code> that includes that byte and that stage" 11776 }, 11777 { 11778 "vuid": "VUID-vkCmdPushConstants-offset-01796", 11779 "text": " For each byte in the range specified by <code>offset</code> and <code>size</code> and for each push constant range that overlaps that byte, <code>stageFlags</code> <strong class=\"purple\">must</strong> include all stages in that push constant range’s <a href=\"#VkPushConstantRange\">VkPushConstantRange</a>::<code>stageFlags</code>" 11780 }, 11781 { 11782 "vuid": "VUID-vkCmdPushConstants-offset-00368", 11783 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 11784 }, 11785 { 11786 "vuid": "VUID-vkCmdPushConstants-size-00369", 11787 "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 11788 }, 11789 { 11790 "vuid": "VUID-vkCmdPushConstants-offset-00370", 11791 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>" 11792 }, 11793 { 11794 "vuid": "VUID-vkCmdPushConstants-size-00371", 11795 "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code> minus <code>offset</code>" 11796 }, 11797 { 11798 "vuid": "VUID-vkCmdPushConstants-commandBuffer-parameter", 11799 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 11800 }, 11801 { 11802 "vuid": "VUID-vkCmdPushConstants-layout-parameter", 11803 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle" 11804 }, 11805 { 11806 "vuid": "VUID-vkCmdPushConstants-stageFlags-parameter", 11807 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values" 11808 }, 11809 { 11810 "vuid": "VUID-vkCmdPushConstants-stageFlags-requiredbitmask", 11811 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 11812 }, 11813 { 11814 "vuid": "VUID-vkCmdPushConstants-pValues-parameter", 11815 "text": " <code>pValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>size</code> bytes" 11816 }, 11817 { 11818 "vuid": "VUID-vkCmdPushConstants-commandBuffer-recording", 11819 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 11820 }, 11821 { 11822 "vuid": "VUID-vkCmdPushConstants-commandBuffer-cmdpool", 11823 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 11824 }, 11825 { 11826 "vuid": "VUID-vkCmdPushConstants-size-arraylength", 11827 "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 11828 }, 11829 { 11830 "vuid": "VUID-vkCmdPushConstants-commonparent", 11831 "text": " Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 11832 } 11833 ] 11834 }, 11835 "vkGetBufferDeviceAddressEXT": { 11836 "(VK_EXT_buffer_device_address)": [ 11837 { 11838 "vuid": "VUID-vkGetBufferDeviceAddressEXT-None-02598", 11839 "text": " The <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled" 11840 }, 11841 { 11842 "vuid": "VUID-vkGetBufferDeviceAddressEXT-device-02599", 11843 "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> feature <strong class=\"purple\">must</strong> be enabled" 11844 }, 11845 { 11846 "vuid": "VUID-vkGetBufferDeviceAddressEXT-device-parameter", 11847 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 11848 }, 11849 { 11850 "vuid": "VUID-vkGetBufferDeviceAddressEXT-pInfo-parameter", 11851 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferDeviceAddressInfoEXT</code> structure" 11852 } 11853 ] 11854 }, 11855 "VkBufferDeviceAddressInfoEXT": { 11856 "(VK_EXT_buffer_device_address)": [ 11857 { 11858 "vuid": "VUID-VkBufferDeviceAddressInfoEXT-buffer-02600", 11859 "text": " If <code>buffer</code> is non-sparse and was not created with the <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT</code> flag, then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 11860 }, 11861 { 11862 "vuid": "VUID-VkBufferDeviceAddressInfoEXT-buffer-02601", 11863 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT</code>" 11864 }, 11865 { 11866 "vuid": "VUID-VkBufferDeviceAddressInfoEXT-sType-sType", 11867 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT</code>" 11868 }, 11869 { 11870 "vuid": "VUID-VkBufferDeviceAddressInfoEXT-pNext-pNext", 11871 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 11872 }, 11873 { 11874 "vuid": "VUID-VkBufferDeviceAddressInfoEXT-buffer-parameter", 11875 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 11876 } 11877 ] 11878 }, 11879 "vkCreateQueryPool": { 11880 "core": [ 11881 { 11882 "vuid": "VUID-vkCreateQueryPool-device-parameter", 11883 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 11884 }, 11885 { 11886 "vuid": "VUID-vkCreateQueryPool-pCreateInfo-parameter", 11887 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkQueryPoolCreateInfo</code> structure" 11888 }, 11889 { 11890 "vuid": "VUID-vkCreateQueryPool-pAllocator-parameter", 11891 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 11892 }, 11893 { 11894 "vuid": "VUID-vkCreateQueryPool-pQueryPool-parameter", 11895 "text": " <code>pQueryPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueryPool</code> handle" 11896 } 11897 ] 11898 }, 11899 "VkQueryPoolCreateInfo": { 11900 "core": [ 11901 { 11902 "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00791", 11903 "text": " If the <a href=\"#features-pipelineStatisticsQuery\">pipeline statistics queries</a> feature is not enabled, <code>queryType</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code>" 11904 }, 11905 { 11906 "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00792", 11907 "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code>, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryPipelineStatisticFlagBits\">VkQueryPipelineStatisticFlagBits</a> values" 11908 }, 11909 { 11910 "vuid": "VUID-VkQueryPoolCreateInfo-sType-sType", 11911 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO</code>" 11912 }, 11913 { 11914 "vuid": "VUID-VkQueryPoolCreateInfo-pNext-pNext", 11915 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 11916 }, 11917 { 11918 "vuid": "VUID-VkQueryPoolCreateInfo-flags-zerobitmask", 11919 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 11920 }, 11921 { 11922 "vuid": "VUID-VkQueryPoolCreateInfo-queryType-parameter", 11923 "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value" 11924 } 11925 ] 11926 }, 11927 "vkDestroyQueryPool": { 11928 "core": [ 11929 { 11930 "vuid": "VUID-vkDestroyQueryPool-queryPool-00793", 11931 "text": " All submitted commands that refer to <code>queryPool</code> <strong class=\"purple\">must</strong> have completed execution" 11932 }, 11933 { 11934 "vuid": "VUID-vkDestroyQueryPool-queryPool-00794", 11935 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>queryPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 11936 }, 11937 { 11938 "vuid": "VUID-vkDestroyQueryPool-queryPool-00795", 11939 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>queryPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 11940 }, 11941 { 11942 "vuid": "VUID-vkDestroyQueryPool-device-parameter", 11943 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 11944 }, 11945 { 11946 "vuid": "VUID-vkDestroyQueryPool-queryPool-parameter", 11947 "text": " If <code>queryPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle" 11948 }, 11949 { 11950 "vuid": "VUID-vkDestroyQueryPool-pAllocator-parameter", 11951 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 11952 }, 11953 { 11954 "vuid": "VUID-vkDestroyQueryPool-queryPool-parent", 11955 "text": " If <code>queryPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 11956 } 11957 ] 11958 }, 11959 "vkCmdResetQueryPool": { 11960 "core": [ 11961 { 11962 "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00796", 11963 "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>" 11964 }, 11965 { 11966 "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00797", 11967 "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 11968 }, 11969 { 11970 "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-parameter", 11971 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 11972 }, 11973 { 11974 "vuid": "VUID-vkCmdResetQueryPool-queryPool-parameter", 11975 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle" 11976 }, 11977 { 11978 "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-recording", 11979 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 11980 }, 11981 { 11982 "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-cmdpool", 11983 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 11984 }, 11985 { 11986 "vuid": "VUID-vkCmdResetQueryPool-renderpass", 11987 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 11988 }, 11989 { 11990 "vuid": "VUID-vkCmdResetQueryPool-commonparent", 11991 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 11992 } 11993 ] 11994 }, 11995 "vkCmdBeginQuery": { 11996 "core": [ 11997 { 11998 "vuid": "VUID-vkCmdBeginQuery-queryPool-01922", 11999 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> that differs from that of any queries that are <a href=\"#queries-operation-active\">active</a> within <code>commandBuffer</code>" 12000 }, 12001 { 12002 "vuid": "VUID-vkCmdBeginQuery-None-00807", 12003 "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable" 12004 }, 12005 { 12006 "vuid": "VUID-vkCmdBeginQuery-queryType-00800", 12007 "text": " If the <a href=\"#features-occlusionQueryPrecise\">precise occlusion queries</a> feature is not enabled, or the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_OCCLUSION</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>" 12008 }, 12009 { 12010 "vuid": "VUID-vkCmdBeginQuery-query-00802", 12011 "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>" 12012 }, 12013 { 12014 "vuid": "VUID-vkCmdBeginQuery-queryType-00803", 12015 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_OCCLUSION</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 12016 }, 12017 { 12018 "vuid": "VUID-vkCmdBeginQuery-queryType-00804", 12019 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate graphics operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 12020 }, 12021 { 12022 "vuid": "VUID-vkCmdBeginQuery-queryType-00805", 12023 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate compute operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 12024 }, 12025 { 12026 "vuid": "VUID-vkCmdBeginQuery-commandBuffer-parameter", 12027 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 12028 }, 12029 { 12030 "vuid": "VUID-vkCmdBeginQuery-queryPool-parameter", 12031 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle" 12032 }, 12033 { 12034 "vuid": "VUID-vkCmdBeginQuery-flags-parameter", 12035 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values" 12036 }, 12037 { 12038 "vuid": "VUID-vkCmdBeginQuery-commandBuffer-recording", 12039 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 12040 }, 12041 { 12042 "vuid": "VUID-vkCmdBeginQuery-commandBuffer-cmdpool", 12043 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 12044 }, 12045 { 12046 "vuid": "VUID-vkCmdBeginQuery-commonparent", 12047 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 12048 } 12049 ], 12050 "(VK_VERSION_1_1)": [ 12051 { 12052 "vuid": "VUID-vkCmdBeginQuery-commandBuffer-01885", 12053 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 12054 } 12055 ], 12056 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 12057 { 12058 "vuid": "VUID-vkCmdBeginQuery-query-00808", 12059 "text": " If <code>vkCmdBeginQuery</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass’s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 12060 } 12061 ], 12062 "(VK_EXT_transform_feedback)": [ 12063 { 12064 "vuid": "VUID-vkCmdBeginQuery-queryType-02327", 12065 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 12066 }, 12067 { 12068 "vuid": "VUID-vkCmdBeginQuery-queryType-02328", 12069 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> then <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackQueries</code> <strong class=\"purple\">must</strong> be supported" 12070 } 12071 ] 12072 }, 12073 "vkCmdBeginQueryIndexedEXT": { 12074 "(VK_EXT_transform_feedback)": [ 12075 { 12076 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-02329", 12077 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> that differs from that of any queries that are <a href=\"#queries-operation-active\">active</a> within <code>commandBuffer</code>" 12078 }, 12079 { 12080 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-02330", 12081 "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable" 12082 }, 12083 { 12084 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02331", 12085 "text": " If the <a href=\"#features-occlusionQueryPrecise\">precise occlusion queries</a> feature is not enabled, or the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_OCCLUSION</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>" 12086 }, 12087 { 12088 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-02332", 12089 "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>" 12090 }, 12091 { 12092 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02333", 12093 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_OCCLUSION</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 12094 }, 12095 { 12096 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02334", 12097 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate graphics operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 12098 }, 12099 { 12100 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02335", 12101 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate compute operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 12102 }, 12103 { 12104 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02338", 12105 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 12106 }, 12107 { 12108 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02339", 12109 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> parameter <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackStreams</code>" 12110 }, 12111 { 12112 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02340", 12113 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> <strong class=\"purple\">must</strong> be zero" 12114 }, 12115 { 12116 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02341", 12117 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> then <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackQueries</code> <strong class=\"purple\">must</strong> be supported" 12118 }, 12119 { 12120 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter", 12121 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 12122 }, 12123 { 12124 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter", 12125 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle" 12126 }, 12127 { 12128 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-flags-parameter", 12129 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values" 12130 }, 12131 { 12132 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-recording", 12133 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 12134 }, 12135 { 12136 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-cmdpool", 12137 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 12138 }, 12139 { 12140 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commonparent", 12141 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 12142 } 12143 ], 12144 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [ 12145 { 12146 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-02336", 12147 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 12148 } 12149 ], 12150 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [ 12151 { 12152 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-02337", 12153 "text": " If <code>vkCmdBeginQuery</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass’s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 12154 } 12155 ] 12156 }, 12157 "vkCmdEndQuery": { 12158 "core": [ 12159 { 12160 "vuid": "VUID-vkCmdEndQuery-None-01923", 12161 "text": " All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>" 12162 }, 12163 { 12164 "vuid": "VUID-vkCmdEndQuery-query-00810", 12165 "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>" 12166 }, 12167 { 12168 "vuid": "VUID-vkCmdEndQuery-commandBuffer-parameter", 12169 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 12170 }, 12171 { 12172 "vuid": "VUID-vkCmdEndQuery-queryPool-parameter", 12173 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle" 12174 }, 12175 { 12176 "vuid": "VUID-vkCmdEndQuery-commandBuffer-recording", 12177 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 12178 }, 12179 { 12180 "vuid": "VUID-vkCmdEndQuery-commandBuffer-cmdpool", 12181 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 12182 }, 12183 { 12184 "vuid": "VUID-vkCmdEndQuery-commonparent", 12185 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 12186 } 12187 ], 12188 "(VK_VERSION_1_1)": [ 12189 { 12190 "vuid": "VUID-vkCmdEndQuery-commandBuffer-01886", 12191 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 12192 } 12193 ], 12194 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 12195 { 12196 "vuid": "VUID-vkCmdEndQuery-query-00812", 12197 "text": " If <code>vkCmdEndQuery</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass’s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 12198 } 12199 ] 12200 }, 12201 "vkCmdEndQueryIndexedEXT": { 12202 "(VK_EXT_transform_feedback)": [ 12203 { 12204 "vuid": "VUID-vkCmdEndQueryIndexedEXT-None-02342", 12205 "text": " All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>" 12206 }, 12207 { 12208 "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02343", 12209 "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>" 12210 }, 12211 { 12212 "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02346", 12213 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> parameter <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackStreams</code>" 12214 }, 12215 { 12216 "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02347", 12217 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> <strong class=\"purple\">must</strong> be zero" 12218 }, 12219 { 12220 "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter", 12221 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 12222 }, 12223 { 12224 "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter", 12225 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle" 12226 }, 12227 { 12228 "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-recording", 12229 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 12230 }, 12231 { 12232 "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-cmdpool", 12233 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 12234 }, 12235 { 12236 "vuid": "VUID-vkCmdEndQueryIndexedEXT-commonparent", 12237 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 12238 } 12239 ], 12240 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [ 12241 { 12242 "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344", 12243 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 12244 } 12245 ], 12246 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [ 12247 { 12248 "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02345", 12249 "text": " If <code>vkCmdEndQuery</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass’s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 12250 } 12251 ] 12252 }, 12253 "vkGetQueryPoolResults": { 12254 "core": [ 12255 { 12256 "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00813", 12257 "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>" 12258 }, 12259 { 12260 "vuid": "VUID-vkGetQueryPoolResults-flags-00814", 12261 "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is not set in <code>flags</code> then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>4</code>" 12262 }, 12263 { 12264 "vuid": "VUID-vkGetQueryPoolResults-flags-00815", 12265 "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is set in <code>flags</code> then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>8</code>" 12266 }, 12267 { 12268 "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00816", 12269 "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 12270 }, 12271 { 12272 "vuid": "VUID-vkGetQueryPoolResults-dataSize-00817", 12273 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be large enough to contain the result of each query, as described <a href=\"#queries-operation-memorylayout\">here</a>" 12274 }, 12275 { 12276 "vuid": "VUID-vkGetQueryPoolResults-queryType-00818", 12277 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TIMESTAMP</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_PARTIAL_BIT</code>" 12278 }, 12279 { 12280 "vuid": "VUID-vkGetQueryPoolResults-device-parameter", 12281 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 12282 }, 12283 { 12284 "vuid": "VUID-vkGetQueryPoolResults-queryPool-parameter", 12285 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle" 12286 }, 12287 { 12288 "vuid": "VUID-vkGetQueryPoolResults-pData-parameter", 12289 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes" 12290 }, 12291 { 12292 "vuid": "VUID-vkGetQueryPoolResults-flags-parameter", 12293 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values" 12294 }, 12295 { 12296 "vuid": "VUID-vkGetQueryPoolResults-dataSize-arraylength", 12297 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 12298 }, 12299 { 12300 "vuid": "VUID-vkGetQueryPoolResults-queryPool-parent", 12301 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 12302 } 12303 ] 12304 }, 12305 "vkCmdCopyQueryPoolResults": { 12306 "core": [ 12307 { 12308 "vuid": "VUID-vkCmdCopyQueryPoolResults-dstOffset-00819", 12309 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>" 12310 }, 12311 { 12312 "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00820", 12313 "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>" 12314 }, 12315 { 12316 "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00821", 12317 "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 12318 }, 12319 { 12320 "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00822", 12321 "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is not set in <code>flags</code> then <code>dstOffset</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>4</code>" 12322 }, 12323 { 12324 "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00823", 12325 "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is set in <code>flags</code> then <code>dstOffset</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>8</code>" 12326 }, 12327 { 12328 "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824", 12329 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have enough storage, from <code>dstOffset</code>, to contain the result of each query, as described <a href=\"#queries-operation-memorylayout\">here</a>" 12330 }, 12331 { 12332 "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825", 12333 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag" 12334 }, 12335 { 12336 "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826", 12337 "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 12338 }, 12339 { 12340 "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-00827", 12341 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TIMESTAMP</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_PARTIAL_BIT</code>" 12342 }, 12343 { 12344 "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter", 12345 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 12346 }, 12347 { 12348 "vuid": "VUID-vkCmdCopyQueryPoolResults-queryPool-parameter", 12349 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle" 12350 }, 12351 { 12352 "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter", 12353 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 12354 }, 12355 { 12356 "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-parameter", 12357 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values" 12358 }, 12359 { 12360 "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-recording", 12361 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 12362 }, 12363 { 12364 "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool", 12365 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 12366 }, 12367 { 12368 "vuid": "VUID-vkCmdCopyQueryPoolResults-renderpass", 12369 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 12370 }, 12371 { 12372 "vuid": "VUID-vkCmdCopyQueryPoolResults-commonparent", 12373 "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 12374 } 12375 ] 12376 }, 12377 "vkCmdWriteTimestamp": { 12378 "core": [ 12379 { 12380 "vuid": "VUID-vkCmdWriteTimestamp-queryPool-01416", 12381 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> of <code>VK_QUERY_TYPE_TIMESTAMP</code>" 12382 }, 12383 { 12384 "vuid": "VUID-vkCmdWriteTimestamp-queryPool-00828", 12385 "text": " The query identified by <code>queryPool</code> and <code>query</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>" 12386 }, 12387 { 12388 "vuid": "VUID-vkCmdWriteTimestamp-timestampValidBits-00829", 12389 "text": " The command pool’s queue family <strong class=\"purple\">must</strong> support a non-zero <code>timestampValidBits</code>" 12390 }, 12391 { 12392 "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-parameter", 12393 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 12394 }, 12395 { 12396 "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-parameter", 12397 "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value" 12398 }, 12399 { 12400 "vuid": "VUID-vkCmdWriteTimestamp-queryPool-parameter", 12401 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle" 12402 }, 12403 { 12404 "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-recording", 12405 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 12406 }, 12407 { 12408 "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-cmdpool", 12409 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 12410 }, 12411 { 12412 "vuid": "VUID-vkCmdWriteTimestamp-commonparent", 12413 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 12414 } 12415 ], 12416 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 12417 { 12418 "vuid": "VUID-vkCmdWriteTimestamp-None-00830", 12419 "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable" 12420 }, 12421 { 12422 "vuid": "VUID-vkCmdWriteTimestamp-query-00831", 12423 "text": " If <code>vkCmdWriteTimestamp</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass’s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 12424 } 12425 ] 12426 }, 12427 "vkCmdClearColorImage": { 12428 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 12429 { 12430 "vuid": "VUID-vkCmdClearColorImage-image-01993", 12431 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>image</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>." 12432 } 12433 ], 12434 "core": [ 12435 { 12436 "vuid": "VUID-vkCmdClearColorImage-image-00002", 12437 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag" 12438 }, 12439 { 12440 "vuid": "VUID-vkCmdClearColorImage-image-00003", 12441 "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 12442 }, 12443 { 12444 "vuid": "VUID-vkCmdClearColorImage-imageLayout-00004", 12445 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresource ranges of <code>image</code> specified in <code>pRanges</code> at the time this command is executed on a <code>VkDevice</code>" 12446 }, 12447 { 12448 "vuid": "VUID-vkCmdClearColorImage-aspectMask-02498", 12449 "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each only include <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 12450 }, 12451 { 12452 "vuid": "VUID-vkCmdClearColorImage-baseMipLevel-01470", 12453 "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 12454 }, 12455 { 12456 "vuid": "VUID-vkCmdClearColorImage-pRanges-01692", 12457 "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>levelCount</code> member is not <code>VK_REMAINING_MIP_LEVELS</code>, then <span class=\"eq\"><code>baseMipLevel</code> + <code>levelCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 12458 }, 12459 { 12460 "vuid": "VUID-vkCmdClearColorImage-baseArrayLayer-01472", 12461 "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseArrayLayer</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 12462 }, 12463 { 12464 "vuid": "VUID-vkCmdClearColorImage-pRanges-01693", 12465 "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>layerCount</code> member is not <code>VK_REMAINING_ARRAY_LAYERS</code>, then <span class=\"eq\"><code>baseArrayLayer</code> + <code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 12466 }, 12467 { 12468 "vuid": "VUID-vkCmdClearColorImage-image-00007", 12469 "text": " <code>image</code> <strong class=\"purple\">must</strong> not have a compressed or depth/stencil format" 12470 }, 12471 { 12472 "vuid": "VUID-vkCmdClearColorImage-commandBuffer-parameter", 12473 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 12474 }, 12475 { 12476 "vuid": "VUID-vkCmdClearColorImage-image-parameter", 12477 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 12478 }, 12479 { 12480 "vuid": "VUID-vkCmdClearColorImage-imageLayout-parameter", 12481 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 12482 }, 12483 { 12484 "vuid": "VUID-vkCmdClearColorImage-pColor-parameter", 12485 "text": " <code>pColor</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkClearColorValue</code> union" 12486 }, 12487 { 12488 "vuid": "VUID-vkCmdClearColorImage-pRanges-parameter", 12489 "text": " <code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <code>VkImageSubresourceRange</code> structures" 12490 }, 12491 { 12492 "vuid": "VUID-vkCmdClearColorImage-commandBuffer-recording", 12493 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 12494 }, 12495 { 12496 "vuid": "VUID-vkCmdClearColorImage-commandBuffer-cmdpool", 12497 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 12498 }, 12499 { 12500 "vuid": "VUID-vkCmdClearColorImage-renderpass", 12501 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 12502 }, 12503 { 12504 "vuid": "VUID-vkCmdClearColorImage-rangeCount-arraylength", 12505 "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 12506 }, 12507 { 12508 "vuid": "VUID-vkCmdClearColorImage-commonparent", 12509 "text": " Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 12510 } 12511 ], 12512 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 12513 { 12514 "vuid": "VUID-vkCmdClearColorImage-image-01545", 12515 "text": " <code>image</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y’C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>" 12516 } 12517 ], 12518 "!(VK_KHR_shared_presentable_image)": [ 12519 { 12520 "vuid": "VUID-vkCmdClearColorImage-imageLayout-00005", 12521 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 12522 } 12523 ], 12524 "(VK_KHR_shared_presentable_image)": [ 12525 { 12526 "vuid": "VUID-vkCmdClearColorImage-imageLayout-01394", 12527 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>" 12528 } 12529 ], 12530 "(VK_VERSION_1_1)": [ 12531 { 12532 "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01805", 12533 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image" 12534 }, 12535 { 12536 "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01806", 12537 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image" 12538 } 12539 ] 12540 }, 12541 "vkCmdClearDepthStencilImage": { 12542 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 12543 { 12544 "vuid": "VUID-vkCmdClearDepthStencilImage-image-01994", 12545 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>image</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>." 12546 } 12547 ], 12548 "core": [ 12549 { 12550 "vuid": "VUID-vkCmdClearDepthStencilImage-image-00009", 12551 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag" 12552 }, 12553 { 12554 "vuid": "VUID-vkCmdClearDepthStencilImage-image-00010", 12555 "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 12556 }, 12557 { 12558 "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00011", 12559 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresource ranges of <code>image</code> specified in <code>pRanges</code> at the time this command is executed on a <code>VkDevice</code>" 12560 }, 12561 { 12562 "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00012", 12563 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be either of <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 12564 }, 12565 { 12566 "vuid": "VUID-vkCmdClearDepthStencilImage-aspectMask-02499", 12567 "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each only include <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> if the image format has a depth component" 12568 }, 12569 { 12570 "vuid": "VUID-vkCmdClearDepthStencilImage-aspectMask-02500", 12571 "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each only include <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> if the image format has a stencil component" 12572 }, 12573 { 12574 "vuid": "VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474", 12575 "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 12576 }, 12577 { 12578 "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01694", 12579 "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>levelCount</code> member is not <code>VK_REMAINING_MIP_LEVELS</code>, then <span class=\"eq\"><code>baseMipLevel</code> + <code>levelCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 12580 }, 12581 { 12582 "vuid": "VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476", 12583 "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseArrayLayer</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 12584 }, 12585 { 12586 "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01695", 12587 "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>layerCount</code> member is not <code>VK_REMAINING_ARRAY_LAYERS</code>, then <span class=\"eq\"><code>baseArrayLayer</code> + <code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 12588 }, 12589 { 12590 "vuid": "VUID-vkCmdClearDepthStencilImage-image-00014", 12591 "text": " <code>image</code> <strong class=\"purple\">must</strong> have a depth/stencil format" 12592 }, 12593 { 12594 "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter", 12595 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 12596 }, 12597 { 12598 "vuid": "VUID-vkCmdClearDepthStencilImage-image-parameter", 12599 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 12600 }, 12601 { 12602 "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-parameter", 12603 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 12604 }, 12605 { 12606 "vuid": "VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter", 12607 "text": " <code>pDepthStencil</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkClearDepthStencilValue</code> structure" 12608 }, 12609 { 12610 "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-parameter", 12611 "text": " <code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <code>VkImageSubresourceRange</code> structures" 12612 }, 12613 { 12614 "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-recording", 12615 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 12616 }, 12617 { 12618 "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-cmdpool", 12619 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 12620 }, 12621 { 12622 "vuid": "VUID-vkCmdClearDepthStencilImage-renderpass", 12623 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 12624 }, 12625 { 12626 "vuid": "VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength", 12627 "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 12628 }, 12629 { 12630 "vuid": "VUID-vkCmdClearDepthStencilImage-commonparent", 12631 "text": " Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 12632 } 12633 ], 12634 "(VK_VERSION_1_1)": [ 12635 { 12636 "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01807", 12637 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image" 12638 }, 12639 { 12640 "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01808", 12641 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image" 12642 } 12643 ] 12644 }, 12645 "vkCmdClearAttachments": { 12646 "core": [ 12647 { 12648 "vuid": "VUID-vkCmdClearAttachments-aspectMask-02501", 12649 "text": " If the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, then the <code>colorAttachment</code> member of that element <strong class=\"purple\">must</strong> either refer to a color attachment which is <code>VK_ATTACHMENT_UNUSED</code>, or <strong class=\"purple\">must</strong> be a valid color attachment." 12650 }, 12651 { 12652 "vuid": "VUID-vkCmdClearAttachments-aspectMask-02502", 12653 "text": " If the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>, then the current subpass' depth/stencil attachment <strong class=\"purple\">must</strong> either be <code>VK_ATTACHMENT_UNUSED</code>, or <strong class=\"purple\">must</strong> have a depth component" 12654 }, 12655 { 12656 "vuid": "VUID-vkCmdClearAttachments-aspectMask-02503", 12657 "text": " If the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, then the current subpass' depth/stencil attachment <strong class=\"purple\">must</strong> either be <code>VK_ATTACHMENT_UNUSED</code>, or <strong class=\"purple\">must</strong> have a stencil component" 12658 }, 12659 { 12660 "vuid": "VUID-vkCmdClearAttachments-pRects-00016", 12661 "text": " The rectangular region specified by each element of <code>pRects</code> <strong class=\"purple\">must</strong> be contained within the render area of the current render pass instance" 12662 }, 12663 { 12664 "vuid": "VUID-vkCmdClearAttachments-pRects-00017", 12665 "text": " The layers specified by each element of <code>pRects</code> <strong class=\"purple\">must</strong> be contained within every attachment that <code>pAttachments</code> refers to" 12666 }, 12667 { 12668 "vuid": "VUID-vkCmdClearAttachments-layerCount-01934", 12669 "text": " The <code>layerCount</code> member of each element of <code>pRects</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 12670 }, 12671 { 12672 "vuid": "VUID-vkCmdClearAttachments-commandBuffer-parameter", 12673 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 12674 }, 12675 { 12676 "vuid": "VUID-vkCmdClearAttachments-pAttachments-parameter", 12677 "text": " <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkClearAttachment</code> structures" 12678 }, 12679 { 12680 "vuid": "VUID-vkCmdClearAttachments-pRects-parameter", 12681 "text": " <code>pRects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rectCount</code> <code>VkClearRect</code> structures" 12682 }, 12683 { 12684 "vuid": "VUID-vkCmdClearAttachments-commandBuffer-recording", 12685 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 12686 }, 12687 { 12688 "vuid": "VUID-vkCmdClearAttachments-commandBuffer-cmdpool", 12689 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 12690 }, 12691 { 12692 "vuid": "VUID-vkCmdClearAttachments-renderpass", 12693 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 12694 }, 12695 { 12696 "vuid": "VUID-vkCmdClearAttachments-attachmentCount-arraylength", 12697 "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 12698 }, 12699 { 12700 "vuid": "VUID-vkCmdClearAttachments-rectCount-arraylength", 12701 "text": " <code>rectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 12702 } 12703 ], 12704 "(VK_VERSION_1_1)": [ 12705 { 12706 "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02504", 12707 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then each attachment to be cleared <strong class=\"purple\">must</strong> not be a protected image." 12708 }, 12709 { 12710 "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02505", 12711 "text": " If <code>commandBuffer</code> is a protected command buffer, then each attachment to be cleared <strong class=\"purple\">must</strong> not be an unprotected image." 12712 } 12713 ], 12714 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 12715 { 12716 "vuid": "VUID-vkCmdClearAttachments-baseArrayLayer-00018", 12717 "text": " If the render pass instance this is recorded in uses multiview, then <code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be zero and <code>layerCount</code> <strong class=\"purple\">must</strong> be one." 12718 } 12719 ] 12720 }, 12721 "VkClearAttachment": { 12722 "core": [ 12723 { 12724 "vuid": "VUID-VkClearAttachment-aspectMask-00019", 12725 "text": " If <code>aspectMask</code> includes <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, it <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" 12726 }, 12727 { 12728 "vuid": "VUID-VkClearAttachment-aspectMask-00020", 12729 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>" 12730 }, 12731 { 12732 "vuid": "VUID-VkClearAttachment-clearValue-00021", 12733 "text": " <code>clearValue</code> <strong class=\"purple\">must</strong> be a valid <code>VkClearValue</code> union" 12734 }, 12735 { 12736 "vuid": "VUID-VkClearAttachment-aspectMask-parameter", 12737 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values" 12738 }, 12739 { 12740 "vuid": "VUID-VkClearAttachment-aspectMask-requiredbitmask", 12741 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 12742 } 12743 ], 12744 "(VK_EXT_image_drm_format_modifier)": [ 12745 { 12746 "vuid": "VUID-VkClearAttachment-aspectMask-02246", 12747 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT for any index <em>i</em>." 12748 } 12749 ] 12750 }, 12751 "VkClearDepthStencilValue": { 12752 "(VK_EXT_depth_range_unrestricted)": [ 12753 { 12754 "vuid": "VUID-VkClearDepthStencilValue-depth-00022", 12755 "text": " Unless the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>depth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 12756 } 12757 ], 12758 "!(VK_EXT_depth_range_unrestricted)": [ 12759 { 12760 "vuid": "VUID-VkClearDepthStencilValue-depth-02506", 12761 "text": " <code>depth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 12762 } 12763 ] 12764 }, 12765 "vkCmdFillBuffer": { 12766 "core": [ 12767 { 12768 "vuid": "VUID-vkCmdFillBuffer-dstOffset-00024", 12769 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>" 12770 }, 12771 { 12772 "vuid": "VUID-vkCmdFillBuffer-dstOffset-00025", 12773 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 12774 }, 12775 { 12776 "vuid": "VUID-vkCmdFillBuffer-size-00026", 12777 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 12778 }, 12779 { 12780 "vuid": "VUID-vkCmdFillBuffer-size-00027", 12781 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>" 12782 }, 12783 { 12784 "vuid": "VUID-vkCmdFillBuffer-size-00028", 12785 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 12786 }, 12787 { 12788 "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00029", 12789 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag" 12790 }, 12791 { 12792 "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00031", 12793 "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 12794 }, 12795 { 12796 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-parameter", 12797 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 12798 }, 12799 { 12800 "vuid": "VUID-vkCmdFillBuffer-dstBuffer-parameter", 12801 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 12802 }, 12803 { 12804 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-recording", 12805 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 12806 }, 12807 { 12808 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-cmdpool", 12809 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics or compute operations" 12810 }, 12811 { 12812 "vuid": "VUID-vkCmdFillBuffer-renderpass", 12813 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 12814 }, 12815 { 12816 "vuid": "VUID-vkCmdFillBuffer-commonparent", 12817 "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 12818 } 12819 ], 12820 "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 12821 { 12822 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-00030", 12823 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics or compute operations" 12824 } 12825 ], 12826 "(VK_VERSION_1_1)": [ 12827 { 12828 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01811", 12829 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 12830 }, 12831 { 12832 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01812", 12833 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer" 12834 } 12835 ] 12836 }, 12837 "vkCmdUpdateBuffer": { 12838 "core": [ 12839 { 12840 "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00032", 12841 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>" 12842 }, 12843 { 12844 "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00033", 12845 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>" 12846 }, 12847 { 12848 "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00034", 12849 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag" 12850 }, 12851 { 12852 "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00035", 12853 "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 12854 }, 12855 { 12856 "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00036", 12857 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 12858 }, 12859 { 12860 "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00037", 12861 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be less than or equal to <code>65536</code>" 12862 }, 12863 { 12864 "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00038", 12865 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 12866 }, 12867 { 12868 "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-parameter", 12869 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 12870 }, 12871 { 12872 "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-parameter", 12873 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 12874 }, 12875 { 12876 "vuid": "VUID-vkCmdUpdateBuffer-pData-parameter", 12877 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes" 12878 }, 12879 { 12880 "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-recording", 12881 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 12882 }, 12883 { 12884 "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-cmdpool", 12885 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 12886 }, 12887 { 12888 "vuid": "VUID-vkCmdUpdateBuffer-renderpass", 12889 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 12890 }, 12891 { 12892 "vuid": "VUID-vkCmdUpdateBuffer-dataSize-arraylength", 12893 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 12894 }, 12895 { 12896 "vuid": "VUID-vkCmdUpdateBuffer-commonparent", 12897 "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 12898 } 12899 ], 12900 "(VK_VERSION_1_1)": [ 12901 { 12902 "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01813", 12903 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 12904 }, 12905 { 12906 "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01814", 12907 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer" 12908 } 12909 ] 12910 }, 12911 "vkCmdCopyBuffer": { 12912 "core": [ 12913 { 12914 "vuid": "VUID-vkCmdCopyBuffer-srcOffset-00113", 12915 "text": " The <code>srcOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the size of <code>srcBuffer</code>" 12916 }, 12917 { 12918 "vuid": "VUID-vkCmdCopyBuffer-dstOffset-00114", 12919 "text": " The <code>dstOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>" 12920 }, 12921 { 12922 "vuid": "VUID-vkCmdCopyBuffer-size-00115", 12923 "text": " The <code>size</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>srcBuffer</code> minus <code>srcOffset</code>" 12924 }, 12925 { 12926 "vuid": "VUID-vkCmdCopyBuffer-size-00116", 12927 "text": " The <code>size</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>" 12928 }, 12929 { 12930 "vuid": "VUID-vkCmdCopyBuffer-pRegions-00117", 12931 "text": " The union of the source regions, and the union of the destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" 12932 }, 12933 { 12934 "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00118", 12935 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag" 12936 }, 12937 { 12938 "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00119", 12939 "text": " If <code>srcBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 12940 }, 12941 { 12942 "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00120", 12943 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag" 12944 }, 12945 { 12946 "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00121", 12947 "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 12948 }, 12949 { 12950 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-parameter", 12951 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 12952 }, 12953 { 12954 "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-parameter", 12955 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 12956 }, 12957 { 12958 "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-parameter", 12959 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 12960 }, 12961 { 12962 "vuid": "VUID-vkCmdCopyBuffer-pRegions-parameter", 12963 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkBufferCopy</code> structures" 12964 }, 12965 { 12966 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-recording", 12967 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 12968 }, 12969 { 12970 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-cmdpool", 12971 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 12972 }, 12973 { 12974 "vuid": "VUID-vkCmdCopyBuffer-renderpass", 12975 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 12976 }, 12977 { 12978 "vuid": "VUID-vkCmdCopyBuffer-regionCount-arraylength", 12979 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 12980 }, 12981 { 12982 "vuid": "VUID-vkCmdCopyBuffer-commonparent", 12983 "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 12984 } 12985 ], 12986 "(VK_VERSION_1_1)": [ 12987 { 12988 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01822", 12989 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 12990 }, 12991 { 12992 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01823", 12993 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 12994 }, 12995 { 12996 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01824", 12997 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer" 12998 } 12999 ] 13000 }, 13001 "VkBufferCopy": { 13002 "core": [ 13003 { 13004 "vuid": "VUID-VkBufferCopy-size-01988", 13005 "text": " The <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 13006 } 13007 ] 13008 }, 13009 "vkCmdCopyImage": { 13010 "core": [ 13011 { 13012 "vuid": "VUID-vkCmdCopyImage-pRegions-00122", 13013 "text": " The source region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>" 13014 }, 13015 { 13016 "vuid": "VUID-vkCmdCopyImage-pRegions-00123", 13017 "text": " The destination region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>" 13018 }, 13019 { 13020 "vuid": "VUID-vkCmdCopyImage-pRegions-00124", 13021 "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" 13022 }, 13023 { 13024 "vuid": "VUID-vkCmdCopyImage-srcImage-00126", 13025 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag" 13026 }, 13027 { 13028 "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00128", 13029 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 13030 }, 13031 { 13032 "vuid": "VUID-vkCmdCopyImage-dstImage-00131", 13033 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag" 13034 }, 13035 { 13036 "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00133", 13037 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 13038 }, 13039 { 13040 "vuid": "VUID-vkCmdCopyImage-srcImage-00136", 13041 "text": " The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> match" 13042 }, 13043 { 13044 "vuid": "VUID-vkCmdCopyImage-srcSubresource-01696", 13045 "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 13046 }, 13047 { 13048 "vuid": "VUID-vkCmdCopyImage-dstSubresource-01697", 13049 "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 13050 }, 13051 { 13052 "vuid": "VUID-vkCmdCopyImage-srcSubresource-01698", 13053 "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> + <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 13054 }, 13055 { 13056 "vuid": "VUID-vkCmdCopyImage-dstSubresource-01699", 13057 "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> + <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 13058 }, 13059 { 13060 "vuid": "VUID-vkCmdCopyImage-srcOffset-01783", 13061 "text": " The <code>srcOffset</code> and <code>extent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" 13062 }, 13063 { 13064 "vuid": "VUID-vkCmdCopyImage-dstOffset-01784", 13065 "text": " The <code>dstOffset</code> and <code>extent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" 13066 }, 13067 { 13068 "vuid": "VUID-vkCmdCopyImage-commandBuffer-parameter", 13069 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 13070 }, 13071 { 13072 "vuid": "VUID-vkCmdCopyImage-srcImage-parameter", 13073 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 13074 }, 13075 { 13076 "vuid": "VUID-vkCmdCopyImage-srcImageLayout-parameter", 13077 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 13078 }, 13079 { 13080 "vuid": "VUID-vkCmdCopyImage-dstImage-parameter", 13081 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 13082 }, 13083 { 13084 "vuid": "VUID-vkCmdCopyImage-dstImageLayout-parameter", 13085 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 13086 }, 13087 { 13088 "vuid": "VUID-vkCmdCopyImage-pRegions-parameter", 13089 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkImageCopy</code> structures" 13090 }, 13091 { 13092 "vuid": "VUID-vkCmdCopyImage-commandBuffer-recording", 13093 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 13094 }, 13095 { 13096 "vuid": "VUID-vkCmdCopyImage-commandBuffer-cmdpool", 13097 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 13098 }, 13099 { 13100 "vuid": "VUID-vkCmdCopyImage-renderpass", 13101 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 13102 }, 13103 { 13104 "vuid": "VUID-vkCmdCopyImage-regionCount-arraylength", 13105 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 13106 }, 13107 { 13108 "vuid": "VUID-vkCmdCopyImage-commonparent", 13109 "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 13110 } 13111 ], 13112 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 13113 { 13114 "vuid": "VUID-vkCmdCopyImage-srcImage-01995", 13115 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_SRC_BIT</code>." 13116 }, 13117 { 13118 "vuid": "VUID-vkCmdCopyImage-dstImage-01996", 13119 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>." 13120 } 13121 ], 13122 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 13123 { 13124 "vuid": "VUID-vkCmdCopyImage-srcImage-00127", 13125 "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 13126 }, 13127 { 13128 "vuid": "VUID-vkCmdCopyImage-dstImage-00132", 13129 "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 13130 }, 13131 { 13132 "vuid": "VUID-vkCmdCopyImage-srcImage-00135", 13133 "text": " The <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> be compatible, as defined <a href=\"#copies-images-format-compatibility\">above</a>" 13134 } 13135 ], 13136 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 13137 { 13138 "vuid": "VUID-vkCmdCopyImage-srcImage-01546", 13139 "text": " If <code>srcImage</code> is non-sparse then the image or <em>disjoint</em> plane to be copied <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 13140 }, 13141 { 13142 "vuid": "VUID-vkCmdCopyImage-dstImage-01547", 13143 "text": " If <code>dstImage</code> is non-sparse then the image or <em>disjoint</em> plane that is the destination of the copy <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 13144 }, 13145 { 13146 "vuid": "VUID-vkCmdCopyImage-srcImage-01548", 13147 "text": " If the <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\"><em>multi-planar format</em></a>, the <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> be compatible, as defined <a href=\"#copies-images-format-compatibility\">above</a>" 13148 }, 13149 { 13150 "vuid": "VUID-vkCmdCopyImage-None-01549", 13151 "text": " In a copy to or from a plane of a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image</a>, the <a href=\"#VkFormat\">VkFormat</a> of the image and plane <strong class=\"purple\">must</strong> be compatible according to <a href=\"#formats-compatible-planes\">the description of compatible planes</a> for the plane being copied" 13152 }, 13153 { 13154 "vuid": "VUID-vkCmdCopyImage-aspectMask-01550", 13155 "text": " When a copy is performed to or from an image with a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, the <code>aspectMask</code> of the <code>srcSubresource</code> and/or <code>dstSubresource</code> that refers to the multi-planar image <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for a <a href=\"#VkFormat\">VkFormat</a> with three planes)" 13156 } 13157 ], 13158 "!(VK_KHR_shared_presentable_image)": [ 13159 { 13160 "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00129", 13161 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 13162 }, 13163 { 13164 "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00134", 13165 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 13166 } 13167 ], 13168 "(VK_KHR_shared_presentable_image)": [ 13169 { 13170 "vuid": "VUID-vkCmdCopyImage-srcImageLayout-01917", 13171 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>" 13172 }, 13173 { 13174 "vuid": "VUID-vkCmdCopyImage-dstImageLayout-01395", 13175 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>" 13176 } 13177 ], 13178 "(VK_VERSION_1_1)": [ 13179 { 13180 "vuid": "VUID-vkCmdCopyImage-commandBuffer-01825", 13181 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image" 13182 }, 13183 { 13184 "vuid": "VUID-vkCmdCopyImage-commandBuffer-01826", 13185 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image" 13186 }, 13187 { 13188 "vuid": "VUID-vkCmdCopyImage-commandBuffer-01827", 13189 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image" 13190 } 13191 ], 13192 "(VK_EXT_fragment_density_map)": [ 13193 { 13194 "vuid": "VUID-vkCmdCopyImage-dstImage-02542", 13195 "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 13196 } 13197 ] 13198 }, 13199 "VkImageCopy": { 13200 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 13201 { 13202 "vuid": "VUID-VkImageCopy-aspectMask-00137", 13203 "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 13204 }, 13205 { 13206 "vuid": "VUID-VkImageCopy-srcOffset-00157", 13207 "text": " If the calling command’s <code>srcImage</code> is a compressed image, all members of <code>srcOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block" 13208 }, 13209 { 13210 "vuid": "VUID-VkImageCopy-extent-00158", 13211 "text": " If the calling command’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> + <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource width" 13212 }, 13213 { 13214 "vuid": "VUID-VkImageCopy-extent-00159", 13215 "text": " If the calling command’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> + <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource height" 13216 }, 13217 { 13218 "vuid": "VUID-VkImageCopy-extent-00160", 13219 "text": " If the calling command’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> + <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource depth" 13220 }, 13221 { 13222 "vuid": "VUID-VkImageCopy-dstOffset-00162", 13223 "text": " If the calling command’s <code>dstImage</code> is a compressed format image, all members of <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block" 13224 }, 13225 { 13226 "vuid": "VUID-VkImageCopy-extent-00163", 13227 "text": " If the calling command’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> + <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource width" 13228 }, 13229 { 13230 "vuid": "VUID-VkImageCopy-extent-00164", 13231 "text": " If the calling command’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> + <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource height" 13232 }, 13233 { 13234 "vuid": "VUID-VkImageCopy-extent-00165", 13235 "text": " If the calling command’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> + <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource depth" 13236 } 13237 ], 13238 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 13239 { 13240 "vuid": "VUID-VkImageCopy-srcImage-01551", 13241 "text": " If neither the calling command’s <code>srcImage</code> nor the calling command’s <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> then the <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 13242 }, 13243 { 13244 "vuid": "VUID-VkImageCopy-srcImage-01552", 13245 "text": " If the calling command’s <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then the <code>srcSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" 13246 }, 13247 { 13248 "vuid": "VUID-VkImageCopy-srcImage-01553", 13249 "text": " If the calling command’s <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then the <code>srcSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" 13250 }, 13251 { 13252 "vuid": "VUID-VkImageCopy-dstImage-01554", 13253 "text": " If the calling command’s <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then the <code>dstSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" 13254 }, 13255 { 13256 "vuid": "VUID-VkImageCopy-dstImage-01555", 13257 "text": " If the calling command’s <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then the <code>dstSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" 13258 }, 13259 { 13260 "vuid": "VUID-VkImageCopy-srcImage-01556", 13261 "text": " If the calling command’s <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>dstImage</code> does not have a multi-planar image format, the <code>dstSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 13262 }, 13263 { 13264 "vuid": "VUID-VkImageCopy-dstImage-01557", 13265 "text": " If the calling command’s <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>srcImage</code> does not have a multi-planar image format, the <code>srcSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 13266 }, 13267 { 13268 "vuid": "VUID-VkImageCopy-srcImage-01727", 13269 "text": " If the calling command’s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, all members of <code>srcOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block" 13270 }, 13271 { 13272 "vuid": "VUID-VkImageCopy-srcImage-01728", 13273 "text": " If the calling command’s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” 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> + <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource width" 13274 }, 13275 { 13276 "vuid": "VUID-VkImageCopy-srcImage-01729", 13277 "text": " If the calling command’s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” 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> + <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource height" 13278 }, 13279 { 13280 "vuid": "VUID-VkImageCopy-srcImage-01730", 13281 "text": " If the calling command’s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” 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> + <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource depth" 13282 }, 13283 { 13284 "vuid": "VUID-VkImageCopy-dstImage-01731", 13285 "text": " If the calling command’s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, “<code>_422</code>” image format, all members of <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block" 13286 }, 13287 { 13288 "vuid": "VUID-VkImageCopy-dstImage-01732", 13289 "text": " If the calling command’s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, “<code>_422</code>” 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> + <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource width" 13290 }, 13291 { 13292 "vuid": "VUID-VkImageCopy-dstImage-01733", 13293 "text": " If the calling command’s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, “<code>_422</code>” 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> + <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource height" 13294 }, 13295 { 13296 "vuid": "VUID-VkImageCopy-dstImage-01734", 13297 "text": " If the calling command’s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, “<code>_422</code>” 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> + <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource depth" 13298 } 13299 ], 13300 "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 13301 { 13302 "vuid": "VUID-VkImageCopy-layerCount-00138", 13303 "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 13304 }, 13305 { 13306 "vuid": "VUID-VkImageCopy-srcImage-00139", 13307 "text": " If either of the calling command’s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of both <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively" 13308 }, 13309 { 13310 "vuid": "VUID-VkImageCopy-srcImage-01789", 13311 "text": " If the calling command’s <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>." 13312 } 13313 ], 13314 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 13315 { 13316 "vuid": "VUID-VkImageCopy-extent-00140", 13317 "text": " The number of slices of the <code>extent</code> (for 3D) or layers of the <code>srcSubresource</code> (for non-3D) <strong class=\"purple\">must</strong> match the number of slices of the <code>extent</code> (for 3D) or layers of the <code>dstSubresource</code> (for non-3D)" 13318 }, 13319 { 13320 "vuid": "VUID-VkImageCopy-srcImage-00141", 13321 "text": " If either of the calling command’s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of the corresponding subresource <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively" 13322 }, 13323 { 13324 "vuid": "VUID-VkImageCopy-srcImage-01790", 13325 "text": " If both <code>srcImage</code> and <code>dstImage</code> are of type <code>VK_IMAGE_TYPE_2D</code> then <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>." 13326 }, 13327 { 13328 "vuid": "VUID-VkImageCopy-srcImage-01791", 13329 "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and the <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then <code>extent.depth</code> <strong class=\"purple\">must</strong> equal to the <code>layerCount</code> member of <code>srcSubresource</code>." 13330 }, 13331 { 13332 "vuid": "VUID-VkImageCopy-dstImage-01792", 13333 "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and the <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then <code>extent.depth</code> <strong class=\"purple\">must</strong> equal to the <code>layerCount</code> member of <code>dstSubresource</code>." 13334 } 13335 ], 13336 "core": [ 13337 { 13338 "vuid": "VUID-VkImageCopy-aspectMask-00142", 13339 "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command’s <code>srcImage</code>" 13340 }, 13341 { 13342 "vuid": "VUID-VkImageCopy-aspectMask-00143", 13343 "text": " The <code>aspectMask</code> member of <code>dstSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command’s <code>dstImage</code>" 13344 }, 13345 { 13346 "vuid": "VUID-VkImageCopy-srcOffset-00144", 13347 "text": " <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource width" 13348 }, 13349 { 13350 "vuid": "VUID-VkImageCopy-srcOffset-00145", 13351 "text": " <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource height" 13352 }, 13353 { 13354 "vuid": "VUID-VkImageCopy-srcImage-00146", 13355 "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>." 13356 }, 13357 { 13358 "vuid": "VUID-VkImageCopy-srcOffset-00147", 13359 "text": " <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource depth" 13360 }, 13361 { 13362 "vuid": "VUID-VkImageCopy-srcImage-01785", 13363 "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>." 13364 }, 13365 { 13366 "vuid": "VUID-VkImageCopy-dstImage-01786", 13367 "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>." 13368 }, 13369 { 13370 "vuid": "VUID-VkImageCopy-srcImage-01787", 13371 "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>." 13372 }, 13373 { 13374 "vuid": "VUID-VkImageCopy-dstImage-01788", 13375 "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>." 13376 }, 13377 { 13378 "vuid": "VUID-VkImageCopy-dstOffset-00150", 13379 "text": " <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource width" 13380 }, 13381 { 13382 "vuid": "VUID-VkImageCopy-dstOffset-00151", 13383 "text": " <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource height" 13384 }, 13385 { 13386 "vuid": "VUID-VkImageCopy-dstImage-00152", 13387 "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>." 13388 }, 13389 { 13390 "vuid": "VUID-VkImageCopy-dstOffset-00153", 13391 "text": " <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource depth" 13392 }, 13393 { 13394 "vuid": "VUID-VkImageCopy-srcSubresource-parameter", 13395 "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure" 13396 }, 13397 { 13398 "vuid": "VUID-VkImageCopy-dstSubresource-parameter", 13399 "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure" 13400 } 13401 ] 13402 }, 13403 "VkImageSubresourceLayers": { 13404 "core": [ 13405 { 13406 "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00167", 13407 "text": " If <code>aspectMask</code> contains <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, it <strong class=\"purple\">must</strong> not contain either of <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" 13408 }, 13409 { 13410 "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00168", 13411 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_ASPECT_METADATA_BIT</code>" 13412 }, 13413 { 13414 "vuid": "VUID-VkImageSubresourceLayers-layerCount-01700", 13415 "text": " <code>layerCount</code> <strong class=\"purple\">must</strong> be greater than 0" 13416 }, 13417 { 13418 "vuid": "VUID-VkImageSubresourceLayers-aspectMask-parameter", 13419 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values" 13420 }, 13421 { 13422 "vuid": "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask", 13423 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 13424 } 13425 ], 13426 "(VK_EXT_image_drm_format_modifier)": [ 13427 { 13428 "vuid": "VUID-VkImageSubresourceLayers-aspectMask-02247", 13429 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT for any index <em>i</em>." 13430 } 13431 ] 13432 }, 13433 "vkCmdCopyBufferToImage": { 13434 "core": [ 13435 { 13436 "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171", 13437 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>" 13438 }, 13439 { 13440 "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00172", 13441 "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>" 13442 }, 13443 { 13444 "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00173", 13445 "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" 13446 }, 13447 { 13448 "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00174", 13449 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag" 13450 }, 13451 { 13452 "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00176", 13453 "text": " If <code>srcBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 13454 }, 13455 { 13456 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00177", 13457 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag" 13458 }, 13459 { 13460 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00178", 13461 "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 13462 }, 13463 { 13464 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00179", 13465 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" 13466 }, 13467 { 13468 "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00180", 13469 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 13470 }, 13471 { 13472 "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01701", 13473 "text": " The <code>imageSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 13474 }, 13475 { 13476 "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01702", 13477 "text": " The <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 13478 }, 13479 { 13480 "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-01793", 13481 "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" 13482 }, 13483 { 13484 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-parameter", 13485 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 13486 }, 13487 { 13488 "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-parameter", 13489 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 13490 }, 13491 { 13492 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-parameter", 13493 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 13494 }, 13495 { 13496 "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter", 13497 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 13498 }, 13499 { 13500 "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-parameter", 13501 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkBufferImageCopy</code> structures" 13502 }, 13503 { 13504 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-recording", 13505 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 13506 }, 13507 { 13508 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-cmdpool", 13509 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 13510 }, 13511 { 13512 "vuid": "VUID-vkCmdCopyBufferToImage-renderpass", 13513 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 13514 }, 13515 { 13516 "vuid": "VUID-vkCmdCopyBufferToImage-regionCount-arraylength", 13517 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 13518 }, 13519 { 13520 "vuid": "VUID-vkCmdCopyBufferToImage-commonparent", 13521 "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 13522 } 13523 ], 13524 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 13525 { 13526 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-01997", 13527 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>." 13528 } 13529 ], 13530 "!(VK_KHR_shared_presentable_image)": [ 13531 { 13532 "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00181", 13533 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 13534 } 13535 ], 13536 "(VK_KHR_shared_presentable_image)": [ 13537 { 13538 "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-01396", 13539 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>" 13540 } 13541 ], 13542 "(VK_VERSION_1_1)": [ 13543 { 13544 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01828", 13545 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 13546 }, 13547 { 13548 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01829", 13549 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image" 13550 }, 13551 { 13552 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01830", 13553 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image" 13554 } 13555 ], 13556 "(VK_EXT_fragment_density_map)": [ 13557 { 13558 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-02543", 13559 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 13560 } 13561 ] 13562 }, 13563 "vkCmdCopyImageToBuffer": { 13564 "core": [ 13565 { 13566 "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00182", 13567 "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>" 13568 }, 13569 { 13570 "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183", 13571 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>" 13572 }, 13573 { 13574 "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00184", 13575 "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" 13576 }, 13577 { 13578 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00186", 13579 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag" 13580 }, 13581 { 13582 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00187", 13583 "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 13584 }, 13585 { 13586 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00188", 13587 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" 13588 }, 13589 { 13590 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189", 13591 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 13592 }, 13593 { 13594 "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00191", 13595 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag" 13596 }, 13597 { 13598 "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00192", 13599 "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 13600 }, 13601 { 13602 "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01703", 13603 "text": " The <code>imageSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 13604 }, 13605 { 13606 "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01704", 13607 "text": " The <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 13608 }, 13609 { 13610 "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-01794", 13611 "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" 13612 }, 13613 { 13614 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter", 13615 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 13616 }, 13617 { 13618 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-parameter", 13619 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 13620 }, 13621 { 13622 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter", 13623 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 13624 }, 13625 { 13626 "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter", 13627 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 13628 }, 13629 { 13630 "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-parameter", 13631 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkBufferImageCopy</code> structures" 13632 }, 13633 { 13634 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-recording", 13635 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 13636 }, 13637 { 13638 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-cmdpool", 13639 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 13640 }, 13641 { 13642 "vuid": "VUID-vkCmdCopyImageToBuffer-renderpass", 13643 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 13644 }, 13645 { 13646 "vuid": "VUID-vkCmdCopyImageToBuffer-regionCount-arraylength", 13647 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 13648 }, 13649 { 13650 "vuid": "VUID-vkCmdCopyImageToBuffer-commonparent", 13651 "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 13652 } 13653 ], 13654 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 13655 { 13656 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-01998", 13657 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_SRC_BIT</code>." 13658 } 13659 ], 13660 "!(VK_KHR_shared_presentable_image)": [ 13661 { 13662 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00190", 13663 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 13664 } 13665 ], 13666 "(VK_KHR_shared_presentable_image)": [ 13667 { 13668 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397", 13669 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 13670 } 13671 ], 13672 "(VK_VERSION_1_1)": [ 13673 { 13674 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01831", 13675 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image" 13676 }, 13677 { 13678 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01832", 13679 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 13680 }, 13681 { 13682 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01833", 13683 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer" 13684 } 13685 ], 13686 "(VK_EXT_fragment_density_map)": [ 13687 { 13688 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-02544", 13689 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 13690 } 13691 ] 13692 }, 13693 "VkBufferImageCopy": { 13694 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 13695 { 13696 "vuid": "VUID-VkBufferImageCopy-bufferOffset-00193", 13697 "text": " If the calling command’s <code>VkImage</code> parameter’s format is not a depth/stencil format, then <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size." 13698 }, 13699 { 13700 "vuid": "VUID-VkBufferImageCopy-bufferRowLength-00203", 13701 "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width" 13702 }, 13703 { 13704 "vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00204", 13705 "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height" 13706 }, 13707 { 13708 "vuid": "VUID-VkBufferImageCopy-imageOffset-00205", 13709 "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block" 13710 }, 13711 { 13712 "vuid": "VUID-VkBufferImageCopy-bufferOffset-00206", 13713 "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes" 13714 }, 13715 { 13716 "vuid": "VUID-VkBufferImageCopy-imageExtent-00207", 13717 "text": " If the calling command’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> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource width" 13718 }, 13719 { 13720 "vuid": "VUID-VkBufferImageCopy-imageExtent-00208", 13721 "text": " If the calling command’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> + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource height" 13722 }, 13723 { 13724 "vuid": "VUID-VkBufferImageCopy-imageExtent-00209", 13725 "text": " If the calling command’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> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource depth" 13726 } 13727 ], 13728 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 13729 { 13730 "vuid": "VUID-VkBufferImageCopy-bufferOffset-01558", 13731 "text": " If the calling command’s <code>VkImage</code> parameter’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’s texel block size." 13732 }, 13733 { 13734 "vuid": "VUID-VkBufferImageCopy-bufferOffset-01559", 13735 "text": " If the calling command’s <code>VkImage</code> parameter’s format is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>" 13736 }, 13737 { 13738 "vuid": "VUID-VkBufferImageCopy-None-01735", 13739 "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width" 13740 }, 13741 { 13742 "vuid": "VUID-VkBufferImageCopy-None-01736", 13743 "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height" 13744 }, 13745 { 13746 "vuid": "VUID-VkBufferImageCopy-None-01737", 13747 "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block" 13748 }, 13749 { 13750 "vuid": "VUID-VkBufferImageCopy-None-01738", 13751 "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” image format, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes" 13752 }, 13753 { 13754 "vuid": "VUID-VkBufferImageCopy-None-01739", 13755 "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” 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> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource width" 13756 }, 13757 { 13758 "vuid": "VUID-VkBufferImageCopy-None-01740", 13759 "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” 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> + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource height" 13760 }, 13761 { 13762 "vuid": "VUID-VkBufferImageCopy-None-01741", 13763 "text": " If the calling command’s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, “<code>_422</code>” 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> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource depth" 13764 }, 13765 { 13766 "vuid": "VUID-VkBufferImageCopy-aspectMask-01560", 13767 "text": " If the calling command’s <code>VkImage</code> parameter’s format is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then the <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for image formats with three planes)" 13768 } 13769 ], 13770 "core": [ 13771 { 13772 "vuid": "VUID-VkBufferImageCopy-bufferOffset-00194", 13773 "text": " <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 13774 }, 13775 { 13776 "vuid": "VUID-VkBufferImageCopy-bufferRowLength-00195", 13777 "text": " <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be <code>0</code>, or greater than or equal to the <code>width</code> member of <code>imageExtent</code>" 13778 }, 13779 { 13780 "vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00196", 13781 "text": " <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be <code>0</code>, or greater than or equal to the <code>height</code> member of <code>imageExtent</code>" 13782 }, 13783 { 13784 "vuid": "VUID-VkBufferImageCopy-imageOffset-00197", 13785 "text": " <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the image subresource width" 13786 }, 13787 { 13788 "vuid": "VUID-VkBufferImageCopy-imageOffset-00198", 13789 "text": " <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the image subresource height" 13790 }, 13791 { 13792 "vuid": "VUID-VkBufferImageCopy-srcImage-00199", 13793 "text": " If the calling command’s <code>srcImage</code> (<a href=\"#vkCmdCopyImageToBuffer\">vkCmdCopyImageToBuffer</a>) or <code>dstImage</code> (<a href=\"#vkCmdCopyBufferToImage\">vkCmdCopyBufferToImage</a>) is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>." 13794 }, 13795 { 13796 "vuid": "VUID-VkBufferImageCopy-imageOffset-00200", 13797 "text": " <code>imageOffset.z</code> and <span class=\"eq\">(imageExtent.depth + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the image subresource depth" 13798 }, 13799 { 13800 "vuid": "VUID-VkBufferImageCopy-srcImage-00201", 13801 "text": " If the calling command’s <code>srcImage</code> (<a href=\"#vkCmdCopyImageToBuffer\">vkCmdCopyImageToBuffer</a>) or <code>dstImage</code> (<a href=\"#vkCmdCopyBufferToImage\">vkCmdCopyBufferToImage</a>) is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 13802 }, 13803 { 13804 "vuid": "VUID-VkBufferImageCopy-aspectMask-00211", 13805 "text": " The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command’s <code>VkImage</code> parameter" 13806 }, 13807 { 13808 "vuid": "VUID-VkBufferImageCopy-aspectMask-00212", 13809 "text": " The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set" 13810 }, 13811 { 13812 "vuid": "VUID-VkBufferImageCopy-baseArrayLayer-00213", 13813 "text": " If the calling command’s <code>VkImage</code> parameter is of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of <code>imageSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively" 13814 }, 13815 { 13816 "vuid": "VUID-VkBufferImageCopy-imageSubresource-parameter", 13817 "text": " <code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure" 13818 } 13819 ], 13820 "!(VK_EXT_depth_range_unrestricted)": [ 13821 { 13822 "vuid": "VUID-VkBufferImageCopy-None-00214", 13823 "text": " When copying to the depth aspect of an image subresource, the data in the source buffer <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>" 13824 } 13825 ] 13826 }, 13827 "vkCmdBlitImage": { 13828 "core": [ 13829 { 13830 "vuid": "VUID-vkCmdBlitImage-pRegions-00215", 13831 "text": " The source region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>" 13832 }, 13833 { 13834 "vuid": "VUID-vkCmdBlitImage-pRegions-00216", 13835 "text": " The destination region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>" 13836 }, 13837 { 13838 "vuid": "VUID-vkCmdBlitImage-pRegions-00217", 13839 "text": " The union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory with any texel that <strong class=\"purple\">may</strong> be sampled during the blit operation" 13840 }, 13841 { 13842 "vuid": "VUID-vkCmdBlitImage-srcImage-01999", 13843 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_BLIT_SRC_BIT</code>." 13844 }, 13845 { 13846 "vuid": "VUID-vkCmdBlitImage-srcImage-00219", 13847 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag" 13848 }, 13849 { 13850 "vuid": "VUID-vkCmdBlitImage-srcImage-00220", 13851 "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 13852 }, 13853 { 13854 "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00221", 13855 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 13856 }, 13857 { 13858 "vuid": "VUID-vkCmdBlitImage-dstImage-02000", 13859 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_BLIT_DST_BIT</code>." 13860 }, 13861 { 13862 "vuid": "VUID-vkCmdBlitImage-dstImage-00224", 13863 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag" 13864 }, 13865 { 13866 "vuid": "VUID-vkCmdBlitImage-dstImage-00225", 13867 "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 13868 }, 13869 { 13870 "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00226", 13871 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 13872 }, 13873 { 13874 "vuid": "VUID-vkCmdBlitImage-srcImage-00228", 13875 "text": " The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> both be equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" 13876 }, 13877 { 13878 "vuid": "VUID-vkCmdBlitImage-srcImage-00229", 13879 "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with a signed integer <a href=\"#VkFormat\">VkFormat</a>, the other <strong class=\"purple\">must</strong> also have been created with a signed integer <a href=\"#VkFormat\">VkFormat</a>" 13880 }, 13881 { 13882 "vuid": "VUID-vkCmdBlitImage-srcImage-00230", 13883 "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with an unsigned integer <a href=\"#VkFormat\">VkFormat</a>, the other <strong class=\"purple\">must</strong> also have been created with an unsigned integer <a href=\"#VkFormat\">VkFormat</a>" 13884 }, 13885 { 13886 "vuid": "VUID-vkCmdBlitImage-srcImage-00231", 13887 "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with a depth/stencil format, the other <strong class=\"purple\">must</strong> have exactly the same format" 13888 }, 13889 { 13890 "vuid": "VUID-vkCmdBlitImage-srcImage-00232", 13891 "text": " If <code>srcImage</code> was created with a depth/stencil format, <code>filter</code> <strong class=\"purple\">must</strong> be <code>VK_FILTER_NEAREST</code>" 13892 }, 13893 { 13894 "vuid": "VUID-vkCmdBlitImage-srcImage-00233", 13895 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value of <code>VK_SAMPLE_COUNT_1_BIT</code>" 13896 }, 13897 { 13898 "vuid": "VUID-vkCmdBlitImage-dstImage-00234", 13899 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value of <code>VK_SAMPLE_COUNT_1_BIT</code>" 13900 }, 13901 { 13902 "vuid": "VUID-vkCmdBlitImage-filter-02001", 13903 "text": " If <code>filter</code> is <code>VK_FILTER_LINEAR</code>, then the <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>." 13904 }, 13905 { 13906 "vuid": "VUID-vkCmdBlitImage-srcSubresource-01705", 13907 "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 13908 }, 13909 { 13910 "vuid": "VUID-vkCmdBlitImage-dstSubresource-01706", 13911 "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 13912 }, 13913 { 13914 "vuid": "VUID-vkCmdBlitImage-srcSubresource-01707", 13915 "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> + <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 13916 }, 13917 { 13918 "vuid": "VUID-vkCmdBlitImage-dstSubresource-01708", 13919 "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> + <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 13920 }, 13921 { 13922 "vuid": "VUID-vkCmdBlitImage-commandBuffer-parameter", 13923 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 13924 }, 13925 { 13926 "vuid": "VUID-vkCmdBlitImage-srcImage-parameter", 13927 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 13928 }, 13929 { 13930 "vuid": "VUID-vkCmdBlitImage-srcImageLayout-parameter", 13931 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 13932 }, 13933 { 13934 "vuid": "VUID-vkCmdBlitImage-dstImage-parameter", 13935 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 13936 }, 13937 { 13938 "vuid": "VUID-vkCmdBlitImage-dstImageLayout-parameter", 13939 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 13940 }, 13941 { 13942 "vuid": "VUID-vkCmdBlitImage-pRegions-parameter", 13943 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkImageBlit</code> structures" 13944 }, 13945 { 13946 "vuid": "VUID-vkCmdBlitImage-filter-parameter", 13947 "text": " <code>filter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value" 13948 }, 13949 { 13950 "vuid": "VUID-vkCmdBlitImage-commandBuffer-recording", 13951 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 13952 }, 13953 { 13954 "vuid": "VUID-vkCmdBlitImage-commandBuffer-cmdpool", 13955 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 13956 }, 13957 { 13958 "vuid": "VUID-vkCmdBlitImage-renderpass", 13959 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 13960 }, 13961 { 13962 "vuid": "VUID-vkCmdBlitImage-regionCount-arraylength", 13963 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 13964 }, 13965 { 13966 "vuid": "VUID-vkCmdBlitImage-commonparent", 13967 "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 13968 } 13969 ], 13970 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 13971 { 13972 "vuid": "VUID-vkCmdBlitImage-srcImage-01561", 13973 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y’C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>" 13974 }, 13975 { 13976 "vuid": "VUID-vkCmdBlitImage-dstImage-01562", 13977 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y’C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>" 13978 } 13979 ], 13980 "!(VK_KHR_shared_presentable_image)": [ 13981 { 13982 "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00222", 13983 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 13984 }, 13985 { 13986 "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00227", 13987 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 13988 } 13989 ], 13990 "(VK_KHR_shared_presentable_image)": [ 13991 { 13992 "vuid": "VUID-vkCmdBlitImage-srcImageLayout-01398", 13993 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 13994 }, 13995 { 13996 "vuid": "VUID-vkCmdBlitImage-dstImageLayout-01399", 13997 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 13998 } 13999 ], 14000 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 14001 { 14002 "vuid": "VUID-vkCmdBlitImage-filter-02002", 14003 "text": " If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code>, then the <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>." 14004 }, 14005 { 14006 "vuid": "VUID-vkCmdBlitImage-filter-00237", 14007 "text": " If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code>, <code>srcImage</code> <strong class=\"purple\">must</strong> have a <a href=\"#VkImageType\">VkImageType</a> of <code>VK_IMAGE_TYPE_2D</code>" 14008 } 14009 ], 14010 "(VK_VERSION_1_1)": [ 14011 { 14012 "vuid": "VUID-vkCmdBlitImage-commandBuffer-01834", 14013 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image" 14014 }, 14015 { 14016 "vuid": "VUID-vkCmdBlitImage-commandBuffer-01835", 14017 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image" 14018 }, 14019 { 14020 "vuid": "VUID-vkCmdBlitImage-commandBuffer-01836", 14021 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image" 14022 } 14023 ], 14024 "(VK_EXT_fragment_density_map)": [ 14025 { 14026 "vuid": "VUID-vkCmdBlitImage-dstImage-02545", 14027 "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 14028 } 14029 ] 14030 }, 14031 "VkImageBlit": { 14032 "core": [ 14033 { 14034 "vuid": "VUID-VkImageBlit-aspectMask-00238", 14035 "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 14036 }, 14037 { 14038 "vuid": "VUID-VkImageBlit-layerCount-00239", 14039 "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 14040 }, 14041 { 14042 "vuid": "VUID-VkImageBlit-srcImage-00240", 14043 "text": " If either of the calling command’s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of both <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively" 14044 }, 14045 { 14046 "vuid": "VUID-VkImageBlit-aspectMask-00241", 14047 "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command’s <code>srcImage</code>" 14048 }, 14049 { 14050 "vuid": "VUID-VkImageBlit-aspectMask-00242", 14051 "text": " The <code>aspectMask</code> member of <code>dstSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command’s <code>dstImage</code>" 14052 }, 14053 { 14054 "vuid": "VUID-VkImageBlit-srcOffset-00243", 14055 "text": " <code>srcOffset</code>[0].<code>x</code> and <code>srcOffset</code>[1].<code>x</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource width" 14056 }, 14057 { 14058 "vuid": "VUID-VkImageBlit-srcOffset-00244", 14059 "text": " <code>srcOffset</code>[0].<code>y</code> and <code>srcOffset</code>[1].<code>y</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource height" 14060 }, 14061 { 14062 "vuid": "VUID-VkImageBlit-srcImage-00245", 14063 "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffset</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>." 14064 }, 14065 { 14066 "vuid": "VUID-VkImageBlit-srcOffset-00246", 14067 "text": " <code>srcOffset</code>[0].<code>z</code> and <code>srcOffset</code>[1].<code>z</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource depth" 14068 }, 14069 { 14070 "vuid": "VUID-VkImageBlit-srcImage-00247", 14071 "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>srcOffset</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffset</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>." 14072 }, 14073 { 14074 "vuid": "VUID-VkImageBlit-dstOffset-00248", 14075 "text": " <code>dstOffset</code>[0].<code>x</code> and <code>dstOffset</code>[1].<code>x</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource width" 14076 }, 14077 { 14078 "vuid": "VUID-VkImageBlit-dstOffset-00249", 14079 "text": " <code>dstOffset</code>[0].<code>y</code> and <code>dstOffset</code>[1].<code>y</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource height" 14080 }, 14081 { 14082 "vuid": "VUID-VkImageBlit-dstImage-00250", 14083 "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffset</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>." 14084 }, 14085 { 14086 "vuid": "VUID-VkImageBlit-dstOffset-00251", 14087 "text": " <code>dstOffset</code>[0].<code>z</code> and <code>dstOffset</code>[1].<code>z</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource depth" 14088 }, 14089 { 14090 "vuid": "VUID-VkImageBlit-dstImage-00252", 14091 "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>dstOffset</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffset</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>." 14092 }, 14093 { 14094 "vuid": "VUID-VkImageBlit-srcSubresource-parameter", 14095 "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure" 14096 }, 14097 { 14098 "vuid": "VUID-VkImageBlit-dstSubresource-parameter", 14099 "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure" 14100 } 14101 ] 14102 }, 14103 "vkCmdResolveImage": { 14104 "core": [ 14105 { 14106 "vuid": "VUID-vkCmdResolveImage-pRegions-00253", 14107 "text": " The source region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>" 14108 }, 14109 { 14110 "vuid": "VUID-vkCmdResolveImage-pRegions-00254", 14111 "text": " The destination region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>" 14112 }, 14113 { 14114 "vuid": "VUID-vkCmdResolveImage-pRegions-00255", 14115 "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" 14116 }, 14117 { 14118 "vuid": "VUID-vkCmdResolveImage-srcImage-00256", 14119 "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 14120 }, 14121 { 14122 "vuid": "VUID-vkCmdResolveImage-srcImage-00257", 14123 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to any valid sample count value other than <code>VK_SAMPLE_COUNT_1_BIT</code>" 14124 }, 14125 { 14126 "vuid": "VUID-vkCmdResolveImage-dstImage-00258", 14127 "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 14128 }, 14129 { 14130 "vuid": "VUID-vkCmdResolveImage-dstImage-00259", 14131 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" 14132 }, 14133 { 14134 "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00260", 14135 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 14136 }, 14137 { 14138 "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00262", 14139 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 14140 }, 14141 { 14142 "vuid": "VUID-vkCmdResolveImage-dstImage-02003", 14143 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>." 14144 }, 14145 { 14146 "vuid": "VUID-vkCmdResolveImage-srcImage-01386", 14147 "text": " <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with the same image format" 14148 }, 14149 { 14150 "vuid": "VUID-vkCmdResolveImage-srcSubresource-01709", 14151 "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 14152 }, 14153 { 14154 "vuid": "VUID-vkCmdResolveImage-dstSubresource-01710", 14155 "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 14156 }, 14157 { 14158 "vuid": "VUID-vkCmdResolveImage-srcSubresource-01711", 14159 "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> + <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 14160 }, 14161 { 14162 "vuid": "VUID-vkCmdResolveImage-dstSubresource-01712", 14163 "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> + <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 14164 }, 14165 { 14166 "vuid": "VUID-vkCmdResolveImage-commandBuffer-parameter", 14167 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 14168 }, 14169 { 14170 "vuid": "VUID-vkCmdResolveImage-srcImage-parameter", 14171 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 14172 }, 14173 { 14174 "vuid": "VUID-vkCmdResolveImage-srcImageLayout-parameter", 14175 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 14176 }, 14177 { 14178 "vuid": "VUID-vkCmdResolveImage-dstImage-parameter", 14179 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 14180 }, 14181 { 14182 "vuid": "VUID-vkCmdResolveImage-dstImageLayout-parameter", 14183 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 14184 }, 14185 { 14186 "vuid": "VUID-vkCmdResolveImage-pRegions-parameter", 14187 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkImageResolve</code> structures" 14188 }, 14189 { 14190 "vuid": "VUID-vkCmdResolveImage-commandBuffer-recording", 14191 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 14192 }, 14193 { 14194 "vuid": "VUID-vkCmdResolveImage-commandBuffer-cmdpool", 14195 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 14196 }, 14197 { 14198 "vuid": "VUID-vkCmdResolveImage-renderpass", 14199 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 14200 }, 14201 { 14202 "vuid": "VUID-vkCmdResolveImage-regionCount-arraylength", 14203 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 14204 }, 14205 { 14206 "vuid": "VUID-vkCmdResolveImage-commonparent", 14207 "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 14208 } 14209 ], 14210 "!(VK_KHR_shared_presentable_image)": [ 14211 { 14212 "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00261", 14213 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 14214 }, 14215 { 14216 "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00263", 14217 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 14218 } 14219 ], 14220 "(VK_KHR_shared_presentable_image)": [ 14221 { 14222 "vuid": "VUID-vkCmdResolveImage-srcImageLayout-01400", 14223 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 14224 }, 14225 { 14226 "vuid": "VUID-vkCmdResolveImage-dstImageLayout-01401", 14227 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 14228 } 14229 ], 14230 "(VK_VERSION_1_1)": [ 14231 { 14232 "vuid": "VUID-vkCmdResolveImage-commandBuffer-01837", 14233 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image" 14234 }, 14235 { 14236 "vuid": "VUID-vkCmdResolveImage-commandBuffer-01838", 14237 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image" 14238 }, 14239 { 14240 "vuid": "VUID-vkCmdResolveImage-commandBuffer-01839", 14241 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image" 14242 } 14243 ], 14244 "(VK_EXT_fragment_density_map)": [ 14245 { 14246 "vuid": "VUID-vkCmdResolveImage-dstImage-02546", 14247 "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 14248 } 14249 ] 14250 }, 14251 "VkImageResolve": { 14252 "core": [ 14253 { 14254 "vuid": "VUID-VkImageResolve-aspectMask-00266", 14255 "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> only contain <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 14256 }, 14257 { 14258 "vuid": "VUID-VkImageResolve-layerCount-00267", 14259 "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 14260 }, 14261 { 14262 "vuid": "VUID-VkImageResolve-srcImage-00268", 14263 "text": " If either of the calling command’s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of both <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively" 14264 }, 14265 { 14266 "vuid": "VUID-VkImageResolve-srcOffset-00269", 14267 "text": " <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource width" 14268 }, 14269 { 14270 "vuid": "VUID-VkImageResolve-srcOffset-00270", 14271 "text": " <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource height" 14272 }, 14273 { 14274 "vuid": "VUID-VkImageResolve-srcImage-00271", 14275 "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>." 14276 }, 14277 { 14278 "vuid": "VUID-VkImageResolve-srcOffset-00272", 14279 "text": " <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource depth" 14280 }, 14281 { 14282 "vuid": "VUID-VkImageResolve-srcImage-00273", 14283 "text": " If the calling command’s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>." 14284 }, 14285 { 14286 "vuid": "VUID-VkImageResolve-dstOffset-00274", 14287 "text": " <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource width" 14288 }, 14289 { 14290 "vuid": "VUID-VkImageResolve-dstOffset-00275", 14291 "text": " <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource height" 14292 }, 14293 { 14294 "vuid": "VUID-VkImageResolve-dstImage-00276", 14295 "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>." 14296 }, 14297 { 14298 "vuid": "VUID-VkImageResolve-dstOffset-00277", 14299 "text": " <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource depth" 14300 }, 14301 { 14302 "vuid": "VUID-VkImageResolve-dstImage-00278", 14303 "text": " If the calling command’s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>." 14304 }, 14305 { 14306 "vuid": "VUID-VkImageResolve-srcSubresource-parameter", 14307 "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure" 14308 }, 14309 { 14310 "vuid": "VUID-VkImageResolve-dstSubresource-parameter", 14311 "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure" 14312 } 14313 ] 14314 }, 14315 "vkCmdWriteBufferMarkerAMD": { 14316 "(VK_AMD_buffer_marker)": [ 14317 { 14318 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798", 14319 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>4</code>." 14320 }, 14321 { 14322 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01799", 14323 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag" 14324 }, 14325 { 14326 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01800", 14327 "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 14328 }, 14329 { 14330 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01801", 14331 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 14332 }, 14333 { 14334 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter", 14335 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 14336 }, 14337 { 14338 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-parameter", 14339 "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value" 14340 }, 14341 { 14342 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-parameter", 14343 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 14344 }, 14345 { 14346 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-recording", 14347 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 14348 }, 14349 { 14350 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-cmdpool", 14351 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 14352 }, 14353 { 14354 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commonparent", 14355 "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 14356 } 14357 ] 14358 }, 14359 "VkPipelineInputAssemblyStateCreateInfo": { 14360 "core": [ 14361 { 14362 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00428", 14363 "text": " If <code>topology</code> is <code>VK_PRIMITIVE_TOPOLOGY_POINT_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY</code>, <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code> or <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, <code>primitiveRestartEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 14364 }, 14365 { 14366 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429", 14367 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>topology</code> <strong class=\"purple\">must</strong> not be any of <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY</code>, <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code> or <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY</code>" 14368 }, 14369 { 14370 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430", 14371 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>topology</code> <strong class=\"purple\">must</strong> not be <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>" 14372 }, 14373 { 14374 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType", 14375 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO</code>" 14376 }, 14377 { 14378 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext", 14379 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 14380 }, 14381 { 14382 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask", 14383 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 14384 }, 14385 { 14386 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter", 14387 "text": " <code>topology</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrimitiveTopology\">VkPrimitiveTopology</a> value" 14388 } 14389 ] 14390 }, 14391 "vkCmdBindIndexBuffer": { 14392 "core": [ 14393 { 14394 "vuid": "VUID-vkCmdBindIndexBuffer-offset-00431", 14395 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>" 14396 }, 14397 { 14398 "vuid": "VUID-vkCmdBindIndexBuffer-offset-00432", 14399 "text": " The sum of <code>offset</code> and the address of the range of <code>VkDeviceMemory</code> object that is backing <code>buffer</code>, <strong class=\"purple\">must</strong> be a multiple of the type indicated by <code>indexType</code>" 14400 }, 14401 { 14402 "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00433", 14403 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDEX_BUFFER_BIT</code> flag" 14404 }, 14405 { 14406 "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00434", 14407 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 14408 }, 14409 { 14410 "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-parameter", 14411 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 14412 }, 14413 { 14414 "vuid": "VUID-vkCmdBindIndexBuffer-buffer-parameter", 14415 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 14416 }, 14417 { 14418 "vuid": "VUID-vkCmdBindIndexBuffer-indexType-parameter", 14419 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value" 14420 }, 14421 { 14422 "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-recording", 14423 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 14424 }, 14425 { 14426 "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-cmdpool", 14427 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 14428 }, 14429 { 14430 "vuid": "VUID-vkCmdBindIndexBuffer-commonparent", 14431 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 14432 } 14433 ], 14434 "(VK_NV_ray_tracing)": [ 14435 { 14436 "vuid": "VUID-vkCmdBindIndexBuffer-indexType-02507", 14437 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> not be <code>VK_INDEX_TYPE_NONE_NV</code>." 14438 } 14439 ] 14440 }, 14441 "vkCmdDraw": { 14442 "core": [ 14443 { 14444 "vuid": "VUID-vkCmdDraw-renderPass-00435", 14445 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 14446 }, 14447 { 14448 "vuid": "VUID-vkCmdDraw-subpass-00436", 14449 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 14450 }, 14451 { 14452 "vuid": "VUID-vkCmdDraw-None-00437", 14453 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 14454 }, 14455 { 14456 "vuid": "VUID-vkCmdDraw-None-00438", 14457 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 14458 }, 14459 { 14460 "vuid": "VUID-vkCmdDraw-None-00439", 14461 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>" 14462 }, 14463 { 14464 "vuid": "VUID-vkCmdDraw-None-00440", 14465 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound" 14466 }, 14467 { 14468 "vuid": "VUID-vkCmdDraw-None-00441", 14469 "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>" 14470 }, 14471 { 14472 "vuid": "VUID-vkCmdDraw-None-00442", 14473 "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 14474 }, 14475 { 14476 "vuid": "VUID-vkCmdDraw-None-00443", 14477 "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer" 14478 }, 14479 { 14480 "vuid": "VUID-vkCmdDraw-None-00444", 14481 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 14482 }, 14483 { 14484 "vuid": "VUID-vkCmdDraw-None-00445", 14485 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 14486 }, 14487 { 14488 "vuid": "VUID-vkCmdDraw-None-00446", 14489 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 14490 }, 14491 { 14492 "vuid": "VUID-vkCmdDraw-None-00447", 14493 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 14494 }, 14495 { 14496 "vuid": "VUID-vkCmdDraw-None-00448", 14497 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 14498 }, 14499 { 14500 "vuid": "VUID-vkCmdDraw-None-00449", 14501 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 14502 }, 14503 { 14504 "vuid": "VUID-vkCmdDraw-None-01499", 14505 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command." 14506 }, 14507 { 14508 "vuid": "VUID-vkCmdDraw-None-02009", 14509 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>." 14510 }, 14511 { 14512 "vuid": "VUID-vkCmdDraw-commandBuffer-parameter", 14513 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 14514 }, 14515 { 14516 "vuid": "VUID-vkCmdDraw-commandBuffer-recording", 14517 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 14518 }, 14519 { 14520 "vuid": "VUID-vkCmdDraw-commandBuffer-cmdpool", 14521 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 14522 }, 14523 { 14524 "vuid": "VUID-vkCmdDraw-renderpass", 14525 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 14526 } 14527 ], 14528 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 14529 { 14530 "vuid": "VUID-vkCmdDraw-None-02010", 14531 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 14532 } 14533 ], 14534 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 14535 { 14536 "vuid": "VUID-vkCmdDraw-None-00452", 14537 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 14538 } 14539 ], 14540 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 14541 { 14542 "vuid": "VUID-vkCmdDraw-filterCubic-02613", 14543 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 14544 }, 14545 { 14546 "vuid": "VUID-vkCmdDraw-filterCubicMinmax-02614", 14547 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 14548 } 14549 ], 14550 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 14551 { 14552 "vuid": "VUID-vkCmdDraw-maxMultiviewInstanceIndex-00453", 14553 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>." 14554 } 14555 ], 14556 "(VK_VERSION_1_1)": [ 14557 { 14558 "vuid": "VUID-vkCmdDraw-commandBuffer-01850", 14559 "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 14560 }, 14561 { 14562 "vuid": "VUID-vkCmdDraw-commandBuffer-01851", 14563 "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer." 14564 }, 14565 { 14566 "vuid": "VUID-vkCmdDraw-commandBuffer-01852", 14567 "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 14568 } 14569 ], 14570 "(VK_EXT_sample_locations)": [ 14571 { 14572 "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-01512", 14573 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 14574 } 14575 ], 14576 "(VK_NV_corner_sampled_image)": [ 14577 { 14578 "vuid": "VUID-vkCmdDraw-flags-02042", 14579 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>." 14580 } 14581 ] 14582 }, 14583 "vkCmdDrawIndexed": { 14584 "core": [ 14585 { 14586 "vuid": "VUID-vkCmdDrawIndexed-renderPass-00454", 14587 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 14588 }, 14589 { 14590 "vuid": "VUID-vkCmdDrawIndexed-subpass-00455", 14591 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 14592 }, 14593 { 14594 "vuid": "VUID-vkCmdDrawIndexed-None-00456", 14595 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 14596 }, 14597 { 14598 "vuid": "VUID-vkCmdDrawIndexed-None-00457", 14599 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 14600 }, 14601 { 14602 "vuid": "VUID-vkCmdDrawIndexed-None-00458", 14603 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>" 14604 }, 14605 { 14606 "vuid": "VUID-vkCmdDrawIndexed-None-00459", 14607 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound" 14608 }, 14609 { 14610 "vuid": "VUID-vkCmdDrawIndexed-None-00460", 14611 "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>" 14612 }, 14613 { 14614 "vuid": "VUID-vkCmdDrawIndexed-None-00461", 14615 "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 14616 }, 14617 { 14618 "vuid": "VUID-vkCmdDrawIndexed-None-00462", 14619 "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer" 14620 }, 14621 { 14622 "vuid": "VUID-vkCmdDrawIndexed-indexSize-00463", 14623 "text": " <span class=\"eq\">(<code>indexSize</code> * (<code>firstIndex</code> + <code>indexCount</code>) + <code>offset</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to the size of the bound index buffer, with <code>indexSize</code> being based on the type specified by <code>indexType</code>, where the index buffer, <code>indexType</code>, and <code>offset</code> are specified via <code>vkCmdBindIndexBuffer</code>" 14624 }, 14625 { 14626 "vuid": "VUID-vkCmdDrawIndexed-None-00464", 14627 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 14628 }, 14629 { 14630 "vuid": "VUID-vkCmdDrawIndexed-None-00465", 14631 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 14632 }, 14633 { 14634 "vuid": "VUID-vkCmdDrawIndexed-None-00466", 14635 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 14636 }, 14637 { 14638 "vuid": "VUID-vkCmdDrawIndexed-None-00467", 14639 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 14640 }, 14641 { 14642 "vuid": "VUID-vkCmdDrawIndexed-None-00468", 14643 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 14644 }, 14645 { 14646 "vuid": "VUID-vkCmdDrawIndexed-None-00469", 14647 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 14648 }, 14649 { 14650 "vuid": "VUID-vkCmdDrawIndexed-None-02011", 14651 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>." 14652 }, 14653 { 14654 "vuid": "VUID-vkCmdDrawIndexed-None-01500", 14655 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command." 14656 }, 14657 { 14658 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-parameter", 14659 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 14660 }, 14661 { 14662 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-recording", 14663 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 14664 }, 14665 { 14666 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-cmdpool", 14667 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 14668 }, 14669 { 14670 "vuid": "VUID-vkCmdDrawIndexed-renderpass", 14671 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 14672 } 14673 ], 14674 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 14675 { 14676 "vuid": "VUID-vkCmdDrawIndexed-None-02012", 14677 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 14678 } 14679 ], 14680 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 14681 { 14682 "vuid": "VUID-vkCmdDrawIndexed-None-00472", 14683 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 14684 } 14685 ], 14686 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 14687 { 14688 "vuid": "VUID-vkCmdDrawIndexed-filterCubic-02615", 14689 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 14690 }, 14691 { 14692 "vuid": "VUID-vkCmdDrawIndexed-filterCubicMinmax-02616", 14693 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 14694 } 14695 ], 14696 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 14697 { 14698 "vuid": "VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-00473", 14699 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>." 14700 } 14701 ], 14702 "(VK_VERSION_1_1)": [ 14703 { 14704 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-01853", 14705 "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 14706 }, 14707 { 14708 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-01854", 14709 "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer." 14710 }, 14711 { 14712 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-01855", 14713 "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 14714 } 14715 ], 14716 "(VK_EXT_sample_locations)": [ 14717 { 14718 "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-01513", 14719 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 14720 } 14721 ], 14722 "(VK_NV_corner_sampled_image)": [ 14723 { 14724 "vuid": "VUID-vkCmdDrawIndexed-flags-02043", 14725 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>." 14726 } 14727 ] 14728 }, 14729 "vkCmdDrawIndirect": { 14730 "core": [ 14731 { 14732 "vuid": "VUID-vkCmdDrawIndirect-buffer-00474", 14733 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 14734 }, 14735 { 14736 "vuid": "VUID-vkCmdDrawIndirect-buffer-01660", 14737 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 14738 }, 14739 { 14740 "vuid": "VUID-vkCmdDrawIndirect-offset-00475", 14741 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 14742 }, 14743 { 14744 "vuid": "VUID-vkCmdDrawIndirect-drawCount-00476", 14745 "text": " If <code>drawCount</code> is greater than <code>1</code>, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndirectCommand</code>)" 14746 }, 14747 { 14748 "vuid": "VUID-vkCmdDrawIndirect-drawCount-00477", 14749 "text": " If the <a href=\"#features-multiDrawIndirect\">multi-draw indirect</a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>" 14750 }, 14751 { 14752 "vuid": "VUID-vkCmdDrawIndirect-firstInstance-00478", 14753 "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>" 14754 }, 14755 { 14756 "vuid": "VUID-vkCmdDrawIndirect-renderPass-00479", 14757 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 14758 }, 14759 { 14760 "vuid": "VUID-vkCmdDrawIndirect-subpass-00480", 14761 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 14762 }, 14763 { 14764 "vuid": "VUID-vkCmdDrawIndirect-None-00481", 14765 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 14766 }, 14767 { 14768 "vuid": "VUID-vkCmdDrawIndirect-None-00482", 14769 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 14770 }, 14771 { 14772 "vuid": "VUID-vkCmdDrawIndirect-None-00483", 14773 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>" 14774 }, 14775 { 14776 "vuid": "VUID-vkCmdDrawIndirect-None-00484", 14777 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound" 14778 }, 14779 { 14780 "vuid": "VUID-vkCmdDrawIndirect-None-00485", 14781 "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 14782 }, 14783 { 14784 "vuid": "VUID-vkCmdDrawIndirect-None-00486", 14785 "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer" 14786 }, 14787 { 14788 "vuid": "VUID-vkCmdDrawIndirect-drawCount-00487", 14789 "text": " If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + <code>sizeof</code>(<a href=\"#VkDrawIndirectCommand\">VkDrawIndirectCommand</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 14790 }, 14791 { 14792 "vuid": "VUID-vkCmdDrawIndirect-drawCount-00488", 14793 "text": " If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <code>offset</code> + <code>sizeof</code>(<a href=\"#VkDrawIndirectCommand\">VkDrawIndirectCommand</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 14794 }, 14795 { 14796 "vuid": "VUID-vkCmdDrawIndirect-drawCount-00489", 14797 "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>" 14798 }, 14799 { 14800 "vuid": "VUID-vkCmdDrawIndirect-None-00490", 14801 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 14802 }, 14803 { 14804 "vuid": "VUID-vkCmdDrawIndirect-None-00491", 14805 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 14806 }, 14807 { 14808 "vuid": "VUID-vkCmdDrawIndirect-None-00492", 14809 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 14810 }, 14811 { 14812 "vuid": "VUID-vkCmdDrawIndirect-None-00493", 14813 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 14814 }, 14815 { 14816 "vuid": "VUID-vkCmdDrawIndirect-None-00494", 14817 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 14818 }, 14819 { 14820 "vuid": "VUID-vkCmdDrawIndirect-None-00495", 14821 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 14822 }, 14823 { 14824 "vuid": "VUID-vkCmdDrawIndirect-None-02013", 14825 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>." 14826 }, 14827 { 14828 "vuid": "VUID-vkCmdDrawIndirect-None-01501", 14829 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command." 14830 }, 14831 { 14832 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-parameter", 14833 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 14834 }, 14835 { 14836 "vuid": "VUID-vkCmdDrawIndirect-buffer-parameter", 14837 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 14838 }, 14839 { 14840 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-recording", 14841 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 14842 }, 14843 { 14844 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-cmdpool", 14845 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 14846 }, 14847 { 14848 "vuid": "VUID-vkCmdDrawIndirect-renderpass", 14849 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 14850 }, 14851 { 14852 "vuid": "VUID-vkCmdDrawIndirect-commonparent", 14853 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 14854 } 14855 ], 14856 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 14857 { 14858 "vuid": "VUID-vkCmdDrawIndirect-None-02014", 14859 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 14860 } 14861 ], 14862 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 14863 { 14864 "vuid": "VUID-vkCmdDrawIndirect-None-00498", 14865 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 14866 } 14867 ], 14868 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 14869 { 14870 "vuid": "VUID-vkCmdDrawIndirect-filterCubic-02617", 14871 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 14872 }, 14873 { 14874 "vuid": "VUID-vkCmdDrawIndirect-filterCubicMinmax-02618", 14875 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 14876 } 14877 ], 14878 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 14879 { 14880 "vuid": "VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-00499", 14881 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>." 14882 } 14883 ], 14884 "(VK_VERSION_1_1)": [ 14885 { 14886 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02640", 14887 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 14888 }, 14889 { 14890 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-01856", 14891 "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 14892 } 14893 ], 14894 "(VK_EXT_sample_locations)": [ 14895 { 14896 "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-01514", 14897 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 14898 } 14899 ], 14900 "(VK_NV_corner_sampled_image)": [ 14901 { 14902 "vuid": "VUID-vkCmdDrawIndirect-flags-02044", 14903 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>." 14904 } 14905 ] 14906 }, 14907 "VkDrawIndirectCommand": { 14908 "core": [ 14909 { 14910 "vuid": "VUID-VkDrawIndirectCommand-None-00500", 14911 "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>" 14912 }, 14913 { 14914 "vuid": "VUID-VkDrawIndirectCommand-firstInstance-00501", 14915 "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>" 14916 } 14917 ] 14918 }, 14919 "vkCmdDrawIndirectCountKHR": { 14920 "(VK_KHR_draw_indirect_count)": [ 14921 { 14922 "vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-03104", 14923 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 14924 }, 14925 { 14926 "vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-03105", 14927 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 14928 }, 14929 { 14930 "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03106", 14931 "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 14932 }, 14933 { 14934 "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03107", 14935 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 14936 }, 14937 { 14938 "vuid": "VUID-vkCmdDrawIndirectCountKHR-offset-03108", 14939 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 14940 }, 14941 { 14942 "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBufferOffset-03109", 14943 "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 14944 }, 14945 { 14946 "vuid": "VUID-vkCmdDrawIndirectCountKHR-stride-03110", 14947 "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to sizeof(<code>VkDrawIndirectCommand</code>)" 14948 }, 14949 { 14950 "vuid": "VUID-vkCmdDrawIndirectCountKHR-maxDrawCount-03111", 14951 "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) + <code>offset</code> + sizeof(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 14952 }, 14953 { 14954 "vuid": "VUID-vkCmdDrawIndirectCountKHR-firstInstance-03112", 14955 "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>" 14956 }, 14957 { 14958 "vuid": "VUID-vkCmdDrawIndirectCountKHR-renderPass-03113", 14959 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 14960 }, 14961 { 14962 "vuid": "VUID-vkCmdDrawIndirectCountKHR-subpass-03114", 14963 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 14964 }, 14965 { 14966 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03115", 14967 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 14968 }, 14969 { 14970 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03116", 14971 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 14972 }, 14973 { 14974 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03117", 14975 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>" 14976 }, 14977 { 14978 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03118", 14979 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound" 14980 }, 14981 { 14982 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03119", 14983 "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 14984 }, 14985 { 14986 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03120", 14987 "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer" 14988 }, 14989 { 14990 "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03121", 14991 "text": " If the count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + sizeof(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 14992 }, 14993 { 14994 "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03122", 14995 "text": " If the count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <code>offset</code> + sizeof(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 14996 }, 14997 { 14998 "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03123", 14999 "text": " The count stored in <code>countBuffer</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>" 15000 }, 15001 { 15002 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03124", 15003 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 15004 }, 15005 { 15006 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03125", 15007 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 15008 }, 15009 { 15010 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03126", 15011 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 15012 }, 15013 { 15014 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03127", 15015 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 15016 }, 15017 { 15018 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03128", 15019 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 15020 }, 15021 { 15022 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03129", 15023 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 15024 }, 15025 { 15026 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02015", 15027 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>." 15028 }, 15029 { 15030 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03131", 15031 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command." 15032 }, 15033 { 15034 "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-parameter", 15035 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 15036 }, 15037 { 15038 "vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-parameter", 15039 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 15040 }, 15041 { 15042 "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-parameter", 15043 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 15044 }, 15045 { 15046 "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-recording", 15047 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 15048 }, 15049 { 15050 "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-cmdpool", 15051 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 15052 }, 15053 { 15054 "vuid": "VUID-vkCmdDrawIndirectCountKHR-renderpass", 15055 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 15056 }, 15057 { 15058 "vuid": "VUID-vkCmdDrawIndirectCountKHR-commonparent", 15059 "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 15060 } 15061 ], 15062 "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 15063 { 15064 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02016", 15065 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 15066 } 15067 ], 15068 "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 15069 { 15070 "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03170", 15071 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 15072 } 15073 ], 15074 "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 15075 { 15076 "vuid": "VUID-vkCmdDrawIndirectCountKHR-filterCubic-02619", 15077 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 15078 }, 15079 { 15080 "vuid": "VUID-vkCmdDrawIndirectCountKHR-filterCubicMinmax-02620", 15081 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 15082 } 15083 ], 15084 "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [ 15085 { 15086 "vuid": "VUID-vkCmdDrawIndirectCountKHR-maxMultiviewInstanceIndex-03132", 15087 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>." 15088 } 15089 ], 15090 "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1)": [ 15091 { 15092 "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-02641", 15093 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 15094 }, 15095 { 15096 "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-03133", 15097 "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 15098 } 15099 ], 15100 "(VK_KHR_draw_indirect_count)+(VK_EXT_sample_locations)": [ 15101 { 15102 "vuid": "VUID-vkCmdDrawIndirectCountKHR-sampleLocationsEnable-03171", 15103 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 15104 } 15105 ], 15106 "(VK_KHR_draw_indirect_count)+(VK_NV_corner_sampled_image)": [ 15107 { 15108 "vuid": "VUID-vkCmdDrawIndirectCountKHR-flags-02045", 15109 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>." 15110 } 15111 ] 15112 }, 15113 "vkCmdDrawIndirectCountAMD": { 15114 "(VK_AMD_draw_indirect_count)": [ 15115 { 15116 "vuid": "VUID-vkCmdDrawIndirectCountAMD-buffer-01661", 15117 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 15118 }, 15119 { 15120 "vuid": "VUID-vkCmdDrawIndirectCountAMD-buffer-01662", 15121 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 15122 }, 15123 { 15124 "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-01663", 15125 "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 15126 }, 15127 { 15128 "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-01664", 15129 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 15130 }, 15131 { 15132 "vuid": "VUID-vkCmdDrawIndirectCountAMD-offset-00502", 15133 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 15134 }, 15135 { 15136 "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBufferOffset-00503", 15137 "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 15138 }, 15139 { 15140 "vuid": "VUID-vkCmdDrawIndirectCountAMD-stride-00504", 15141 "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndirectCommand</code>)" 15142 }, 15143 { 15144 "vuid": "VUID-vkCmdDrawIndirectCountAMD-maxDrawCount-00505", 15145 "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) + <code>offset</code> + <code>sizeof</code>(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 15146 }, 15147 { 15148 "vuid": "VUID-vkCmdDrawIndirectCountAMD-firstInstance-00506", 15149 "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>" 15150 }, 15151 { 15152 "vuid": "VUID-vkCmdDrawIndirectCountAMD-renderPass-00507", 15153 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 15154 }, 15155 { 15156 "vuid": "VUID-vkCmdDrawIndirectCountAMD-subpass-00508", 15157 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 15158 }, 15159 { 15160 "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00509", 15161 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 15162 }, 15163 { 15164 "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00510", 15165 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 15166 }, 15167 { 15168 "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00511", 15169 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>" 15170 }, 15171 { 15172 "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00512", 15173 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound" 15174 }, 15175 { 15176 "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00513", 15177 "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 15178 }, 15179 { 15180 "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00514", 15181 "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer" 15182 }, 15183 { 15184 "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-00515", 15185 "text": " If the count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + <code>sizeof</code>(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 15186 }, 15187 { 15188 "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-00516", 15189 "text": " If the count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <code>offset</code> + <code>sizeof</code>(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 15190 }, 15191 { 15192 "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-00517", 15193 "text": " The count stored in <code>countBuffer</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>" 15194 }, 15195 { 15196 "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00518", 15197 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 15198 }, 15199 { 15200 "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00519", 15201 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 15202 }, 15203 { 15204 "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00520", 15205 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 15206 }, 15207 { 15208 "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00521", 15209 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 15210 }, 15211 { 15212 "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00522", 15213 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 15214 }, 15215 { 15216 "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00523", 15217 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 15218 }, 15219 { 15220 "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-02017", 15221 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>." 15222 }, 15223 { 15224 "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-01502", 15225 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command." 15226 }, 15227 { 15228 "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-parameter", 15229 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 15230 }, 15231 { 15232 "vuid": "VUID-vkCmdDrawIndirectCountAMD-buffer-parameter", 15233 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 15234 }, 15235 { 15236 "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-parameter", 15237 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 15238 }, 15239 { 15240 "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-recording", 15241 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 15242 }, 15243 { 15244 "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-cmdpool", 15245 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 15246 }, 15247 { 15248 "vuid": "VUID-vkCmdDrawIndirectCountAMD-renderpass", 15249 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 15250 }, 15251 { 15252 "vuid": "VUID-vkCmdDrawIndirectCountAMD-commonparent", 15253 "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 15254 } 15255 ], 15256 "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [ 15257 { 15258 "vuid": "VUID-vkCmdDrawIndirectCountAMD-maxMultiviewInstanceIndex-00525", 15259 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>." 15260 } 15261 ], 15262 "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1)": [ 15263 { 15264 "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-02642", 15265 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 15266 }, 15267 { 15268 "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-01859", 15269 "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 15270 } 15271 ], 15272 "(VK_AMD_draw_indirect_count)+(VK_EXT_sample_locations)": [ 15273 { 15274 "vuid": "VUID-vkCmdDrawIndirectCountAMD-sampleLocationsEnable-01515", 15275 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 15276 } 15277 ], 15278 "(VK_AMD_draw_indirect_count)+(VK_NV_corner_sampled_image)": [ 15279 { 15280 "vuid": "VUID-vkCmdDrawIndirectCountAMD-flags-02046", 15281 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>." 15282 } 15283 ] 15284 }, 15285 "vkCmdDrawIndexedIndirect": { 15286 "core": [ 15287 { 15288 "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-00526", 15289 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 15290 }, 15291 { 15292 "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-01665", 15293 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 15294 }, 15295 { 15296 "vuid": "VUID-vkCmdDrawIndexedIndirect-offset-00527", 15297 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 15298 }, 15299 { 15300 "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00528", 15301 "text": " If <code>drawCount</code> is greater than <code>1</code>, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>)" 15302 }, 15303 { 15304 "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00529", 15305 "text": " If the <a href=\"#features-multiDrawIndirect\">multi-draw indirect</a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>" 15306 }, 15307 { 15308 "vuid": "VUID-vkCmdDrawIndexedIndirect-firstInstance-00530", 15309 "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndexedIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>" 15310 }, 15311 { 15312 "vuid": "VUID-vkCmdDrawIndexedIndirect-renderPass-00531", 15313 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 15314 }, 15315 { 15316 "vuid": "VUID-vkCmdDrawIndexedIndirect-subpass-00532", 15317 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 15318 }, 15319 { 15320 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00533", 15321 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 15322 }, 15323 { 15324 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00534", 15325 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 15326 }, 15327 { 15328 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00535", 15329 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>" 15330 }, 15331 { 15332 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00536", 15333 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound" 15334 }, 15335 { 15336 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00537", 15337 "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 15338 }, 15339 { 15340 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00538", 15341 "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer" 15342 }, 15343 { 15344 "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00539", 15345 "text": " If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 15346 }, 15347 { 15348 "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00540", 15349 "text": " If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <code>offset</code> + <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 15350 }, 15351 { 15352 "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00541", 15353 "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>" 15354 }, 15355 { 15356 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00542", 15357 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 15358 }, 15359 { 15360 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00543", 15361 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 15362 }, 15363 { 15364 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00544", 15365 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 15366 }, 15367 { 15368 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00545", 15369 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 15370 }, 15371 { 15372 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00546", 15373 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 15374 }, 15375 { 15376 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00547", 15377 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 15378 }, 15379 { 15380 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02018", 15381 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>." 15382 }, 15383 { 15384 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-01503", 15385 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command." 15386 }, 15387 { 15388 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter", 15389 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 15390 }, 15391 { 15392 "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-parameter", 15393 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 15394 }, 15395 { 15396 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-recording", 15397 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 15398 }, 15399 { 15400 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool", 15401 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 15402 }, 15403 { 15404 "vuid": "VUID-vkCmdDrawIndexedIndirect-renderpass", 15405 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 15406 }, 15407 { 15408 "vuid": "VUID-vkCmdDrawIndexedIndirect-commonparent", 15409 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 15410 } 15411 ], 15412 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 15413 { 15414 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02019", 15415 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 15416 } 15417 ], 15418 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 15419 { 15420 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00550", 15421 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 15422 } 15423 ], 15424 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 15425 { 15426 "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubic-02621", 15427 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 15428 }, 15429 { 15430 "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02622", 15431 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 15432 } 15433 ], 15434 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 15435 { 15436 "vuid": "VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-00551", 15437 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>." 15438 } 15439 ], 15440 "(VK_VERSION_1_1)": [ 15441 { 15442 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02643", 15443 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 15444 }, 15445 { 15446 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-01862", 15447 "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 15448 } 15449 ], 15450 "(VK_EXT_sample_locations)": [ 15451 { 15452 "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-01516", 15453 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 15454 } 15455 ], 15456 "(VK_NV_corner_sampled_image)": [ 15457 { 15458 "vuid": "VUID-vkCmdDrawIndexedIndirect-flags-02047", 15459 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>." 15460 } 15461 ] 15462 }, 15463 "VkDrawIndexedIndirectCommand": { 15464 "core": [ 15465 { 15466 "vuid": "VUID-VkDrawIndexedIndirectCommand-None-00552", 15467 "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>" 15468 }, 15469 { 15470 "vuid": "VUID-VkDrawIndexedIndirectCommand-indexSize-00553", 15471 "text": " <span class=\"eq\">(<code>indexSize</code> * (<code>firstIndex</code> + <code>indexCount</code>) + <code>offset</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to the size of the bound index buffer, with <code>indexSize</code> being based on the type specified by <code>indexType</code>, where the index buffer, <code>indexType</code>, and <code>offset</code> are specified via <code>vkCmdBindIndexBuffer</code>" 15472 }, 15473 { 15474 "vuid": "VUID-VkDrawIndexedIndirectCommand-firstInstance-00554", 15475 "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>" 15476 } 15477 ] 15478 }, 15479 "vkCmdDrawIndexedIndirectCountKHR": { 15480 "(VK_KHR_draw_indirect_count)": [ 15481 { 15482 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-03136", 15483 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 15484 }, 15485 { 15486 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-03137", 15487 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 15488 }, 15489 { 15490 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03138", 15491 "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 15492 }, 15493 { 15494 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03139", 15495 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 15496 }, 15497 { 15498 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-offset-03140", 15499 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 15500 }, 15501 { 15502 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBufferOffset-03141", 15503 "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 15504 }, 15505 { 15506 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-stride-03142", 15507 "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to sizeof(<code>VkDrawIndexedIndirectCommand</code>)" 15508 }, 15509 { 15510 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-maxDrawCount-03143", 15511 "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) + <code>offset</code> + sizeof(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 15512 }, 15513 { 15514 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-firstInstance-03144", 15515 "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndexedIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>" 15516 }, 15517 { 15518 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-renderPass-03145", 15519 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 15520 }, 15521 { 15522 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-subpass-03146", 15523 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 15524 }, 15525 { 15526 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03147", 15527 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 15528 }, 15529 { 15530 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03148", 15531 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 15532 }, 15533 { 15534 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03149", 15535 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>" 15536 }, 15537 { 15538 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03150", 15539 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound" 15540 }, 15541 { 15542 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03151", 15543 "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 15544 }, 15545 { 15546 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03152", 15547 "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer" 15548 }, 15549 { 15550 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03153", 15551 "text": " If count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + sizeof(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 15552 }, 15553 { 15554 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03154", 15555 "text": " If count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <code>offset</code> + sizeof(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 15556 }, 15557 { 15558 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-drawCount-03155", 15559 "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>" 15560 }, 15561 { 15562 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03156", 15563 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 15564 }, 15565 { 15566 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03157", 15567 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 15568 }, 15569 { 15570 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03158", 15571 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 15572 }, 15573 { 15574 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03159", 15575 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 15576 }, 15577 { 15578 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03160", 15579 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 15580 }, 15581 { 15582 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03161", 15583 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 15584 }, 15585 { 15586 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02020", 15587 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>." 15588 }, 15589 { 15590 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03163", 15591 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command." 15592 }, 15593 { 15594 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-parameter", 15595 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 15596 }, 15597 { 15598 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-parameter", 15599 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 15600 }, 15601 { 15602 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-parameter", 15603 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 15604 }, 15605 { 15606 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-recording", 15607 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 15608 }, 15609 { 15610 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-cmdpool", 15611 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 15612 }, 15613 { 15614 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-renderpass", 15615 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 15616 }, 15617 { 15618 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commonparent", 15619 "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 15620 } 15621 ], 15622 "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 15623 { 15624 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02021", 15625 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 15626 } 15627 ], 15628 "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 15629 { 15630 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03173", 15631 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 15632 } 15633 ], 15634 "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 15635 { 15636 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-filterCubic-02623", 15637 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 15638 }, 15639 { 15640 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-filterCubicMinmax-02624", 15641 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 15642 } 15643 ], 15644 "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [ 15645 { 15646 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-maxMultiviewInstanceIndex-03164", 15647 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>." 15648 } 15649 ], 15650 "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1)": [ 15651 { 15652 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-02644", 15653 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 15654 }, 15655 { 15656 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-03165", 15657 "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 15658 } 15659 ], 15660 "(VK_KHR_draw_indirect_count)+(VK_EXT_sample_locations)": [ 15661 { 15662 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-sampleLocationsEnable-03174", 15663 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 15664 } 15665 ], 15666 "(VK_KHR_draw_indirect_count)+(VK_NV_corner_sampled_image)": [ 15667 { 15668 "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-flags-02048", 15669 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>." 15670 } 15671 ] 15672 }, 15673 "vkCmdDrawIndexedIndirectCountAMD": { 15674 "(VK_AMD_draw_indirect_count)": [ 15675 { 15676 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-01666", 15677 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 15678 }, 15679 { 15680 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-01667", 15681 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 15682 }, 15683 { 15684 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-01668", 15685 "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 15686 }, 15687 { 15688 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-01669", 15689 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 15690 }, 15691 { 15692 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-offset-00555", 15693 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 15694 }, 15695 { 15696 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBufferOffset-00556", 15697 "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 15698 }, 15699 { 15700 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-stride-00557", 15701 "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>)" 15702 }, 15703 { 15704 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-maxDrawCount-00558", 15705 "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) + <code>offset</code> + <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 15706 }, 15707 { 15708 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-firstInstance-00559", 15709 "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndexedIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>" 15710 }, 15711 { 15712 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-renderPass-00560", 15713 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 15714 }, 15715 { 15716 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-subpass-00561", 15717 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 15718 }, 15719 { 15720 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00562", 15721 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 15722 }, 15723 { 15724 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00563", 15725 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 15726 }, 15727 { 15728 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00564", 15729 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>" 15730 }, 15731 { 15732 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00565", 15733 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound" 15734 }, 15735 { 15736 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00566", 15737 "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 15738 }, 15739 { 15740 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00567", 15741 "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer" 15742 }, 15743 { 15744 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-00568", 15745 "text": " If count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 15746 }, 15747 { 15748 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-00569", 15749 "text": " If count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <code>offset</code> + <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 15750 }, 15751 { 15752 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-drawCount-00570", 15753 "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>" 15754 }, 15755 { 15756 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00571", 15757 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 15758 }, 15759 { 15760 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00572", 15761 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 15762 }, 15763 { 15764 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00573", 15765 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 15766 }, 15767 { 15768 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00574", 15769 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 15770 }, 15771 { 15772 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00575", 15773 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 15774 }, 15775 { 15776 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00576", 15777 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 15778 }, 15779 { 15780 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-02022", 15781 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>." 15782 }, 15783 { 15784 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-01504", 15785 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command." 15786 }, 15787 { 15788 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-parameter", 15789 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 15790 }, 15791 { 15792 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-parameter", 15793 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 15794 }, 15795 { 15796 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-parameter", 15797 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 15798 }, 15799 { 15800 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-recording", 15801 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 15802 }, 15803 { 15804 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-cmdpool", 15805 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 15806 }, 15807 { 15808 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-renderpass", 15809 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 15810 }, 15811 { 15812 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commonparent", 15813 "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 15814 } 15815 ], 15816 "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [ 15817 { 15818 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-maxMultiviewInstanceIndex-00578", 15819 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>." 15820 } 15821 ], 15822 "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1)": [ 15823 { 15824 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-02645", 15825 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 15826 }, 15827 { 15828 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-01865", 15829 "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 15830 } 15831 ], 15832 "(VK_AMD_draw_indirect_count)+(VK_EXT_sample_locations)": [ 15833 { 15834 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-sampleLocationsEnable-01517", 15835 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 15836 } 15837 ], 15838 "(VK_AMD_draw_indirect_count)+(VK_NV_corner_sampled_image)": [ 15839 { 15840 "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-flags-02049", 15841 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>." 15842 } 15843 ] 15844 }, 15845 "vkCmdDrawIndirectByteCountEXT": { 15846 "(VK_EXT_transform_feedback)": [ 15847 { 15848 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287", 15849 "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled" 15850 }, 15851 { 15852 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288", 15853 "text": " The implementation <strong class=\"purple\">must</strong> support <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackDraw</code>" 15854 }, 15855 { 15856 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289", 15857 "text": " <code>vertexStride</code> <strong class=\"purple\">must</strong> be greater than 0 and less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxTransformFeedbackBufferDataStride</code>" 15858 }, 15859 { 15860 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290", 15861 "text": " <code>counterBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 15862 }, 15863 { 15864 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02291", 15865 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 15866 }, 15867 { 15868 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-subpass-02292", 15869 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 15870 }, 15871 { 15872 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02293", 15873 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 15874 }, 15875 { 15876 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02294", 15877 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 15878 }, 15879 { 15880 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02295", 15881 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>" 15882 }, 15883 { 15884 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02296", 15885 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound" 15886 }, 15887 { 15888 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02297", 15889 "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>" 15890 }, 15891 { 15892 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02298", 15893 "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 15894 }, 15895 { 15896 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02299", 15897 "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer" 15898 }, 15899 { 15900 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02300", 15901 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 15902 }, 15903 { 15904 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02301", 15905 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 15906 }, 15907 { 15908 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02302", 15909 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 15910 }, 15911 { 15912 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02303", 15913 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 15914 }, 15915 { 15916 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02304", 15917 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command" 15918 }, 15919 { 15920 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02305", 15921 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 15922 }, 15923 { 15924 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter", 15925 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 15926 }, 15927 { 15928 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter", 15929 "text": " <code>counterBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 15930 }, 15931 { 15932 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-recording", 15933 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 15934 }, 15935 { 15936 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool", 15937 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 15938 }, 15939 { 15940 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderpass", 15941 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 15942 }, 15943 { 15944 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commonparent", 15945 "text": " Both of <code>commandBuffer</code>, and <code>counterBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 15946 } 15947 ], 15948 "(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 15949 { 15950 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02306", 15951 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 15952 } 15953 ], 15954 "(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 15955 { 15956 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02307", 15957 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 15958 } 15959 ], 15960 "(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 15961 { 15962 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02625", 15963 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 15964 }, 15965 { 15966 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02626", 15967 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 15968 } 15969 ], 15970 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [ 15971 { 15972 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02308", 15973 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>" 15974 } 15975 ], 15976 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [ 15977 { 15978 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646", 15979 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 15980 }, 15981 { 15982 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02309", 15983 "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer" 15984 } 15985 ], 15986 "(VK_EXT_transform_feedback)+(VK_EXT_sample_locations)": [ 15987 { 15988 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02312", 15989 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 15990 } 15991 ] 15992 }, 15993 "vkCmdBeginConditionalRenderingEXT": { 15994 "(VK_EXT_conditional_rendering)": [ 15995 { 15996 "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-None-01980", 15997 "text": " Conditional rendering <strong class=\"purple\">must</strong> not already be <a href=\"#active-conditional-rendering\">active</a>" 15998 }, 15999 { 16000 "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter", 16001 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 16002 }, 16003 { 16004 "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-pConditionalRenderingBegin-parameter", 16005 "text": " <code>pConditionalRenderingBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkConditionalRenderingBeginInfoEXT</code> structure" 16006 }, 16007 { 16008 "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-recording", 16009 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 16010 }, 16011 { 16012 "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-cmdpool", 16013 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 16014 } 16015 ] 16016 }, 16017 "VkConditionalRenderingBeginInfoEXT": { 16018 "(VK_EXT_conditional_rendering)": [ 16019 { 16020 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01981", 16021 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 16022 }, 16023 { 16024 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01982", 16025 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT</code> bit set" 16026 }, 16027 { 16028 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01983", 16029 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code> by at least 32 bits." 16030 }, 16031 { 16032 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01984", 16033 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of 4" 16034 }, 16035 { 16036 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-sType-sType", 16037 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT</code>" 16038 }, 16039 { 16040 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-pNext-pNext", 16041 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 16042 }, 16043 { 16044 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-parameter", 16045 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 16046 }, 16047 { 16048 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-flags-parameter", 16049 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkConditionalRenderingFlagBitsEXT\">VkConditionalRenderingFlagBitsEXT</a> values" 16050 } 16051 ] 16052 }, 16053 "vkCmdEndConditionalRenderingEXT": { 16054 "(VK_EXT_conditional_rendering)": [ 16055 { 16056 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01985", 16057 "text": " Conditional rendering <strong class=\"purple\">must</strong> be <a href=\"#active-conditional-rendering\">active</a>" 16058 }, 16059 { 16060 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01986", 16061 "text": " If conditional rendering was made <a href=\"#active-conditional-rendering\">active</a> outside of a render pass instance, it must not be ended inside a render pass instance" 16062 }, 16063 { 16064 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01987", 16065 "text": " If conditional rendering was made <a href=\"#active-conditional-rendering\">active</a> within a subpass it must be ended in the same subpass" 16066 }, 16067 { 16068 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter", 16069 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 16070 }, 16071 { 16072 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-recording", 16073 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 16074 }, 16075 { 16076 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-cmdpool", 16077 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 16078 } 16079 ] 16080 }, 16081 "vkCmdDrawMeshTasksNV": { 16082 "(VK_NV_mesh_shader)": [ 16083 { 16084 "vuid": "VUID-vkCmdDrawMeshTasksNV-taskCount-02119", 16085 "text": " <code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>" 16086 }, 16087 { 16088 "vuid": "VUID-vkCmdDrawMeshTasksNV-renderPass-02120", 16089 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 16090 }, 16091 { 16092 "vuid": "VUID-vkCmdDrawMeshTasksNV-subpass-02121", 16093 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 16094 }, 16095 { 16096 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02122", 16097 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 16098 }, 16099 { 16100 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02123", 16101 "text": " For each push constant that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 16102 }, 16103 { 16104 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02124", 16105 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the currently bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>" 16106 }, 16107 { 16108 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02125", 16109 "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 16110 }, 16111 { 16112 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02126", 16113 "text": " If the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer" 16114 }, 16115 { 16116 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02127", 16117 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 16118 }, 16119 { 16120 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02128", 16121 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 16122 }, 16123 { 16124 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02129", 16125 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 16126 }, 16127 { 16128 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02130", 16129 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 16130 }, 16131 { 16132 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02131", 16133 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set" 16134 }, 16135 { 16136 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02132", 16137 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set" 16138 }, 16139 { 16140 "vuid": "VUID-vkCmdDrawMeshTasksNV-linearTilingFeatures-02133", 16141 "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>" 16142 }, 16143 { 16144 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02134", 16145 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command." 16146 }, 16147 { 16148 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter", 16149 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 16150 }, 16151 { 16152 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-recording", 16153 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 16154 }, 16155 { 16156 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool", 16157 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 16158 }, 16159 { 16160 "vuid": "VUID-vkCmdDrawMeshTasksNV-renderpass", 16161 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 16162 } 16163 ], 16164 "(VK_NV_mesh_shader)+(VK_IMG_filter_cubic)": [ 16165 { 16166 "vuid": "VUID-vkCmdDrawMeshTasksNV-linearTilingFeatures-02135", 16167 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports cubic filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>" 16168 }, 16169 { 16170 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02136", 16171 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 16172 } 16173 ], 16174 "(VK_NV_mesh_shader)+(VK_KHR_multiview)": [ 16175 { 16176 "vuid": "VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02137", 16177 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>." 16178 } 16179 ], 16180 "(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [ 16181 { 16182 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02138", 16183 "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 16184 }, 16185 { 16186 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02139", 16187 "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer." 16188 }, 16189 { 16190 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02140", 16191 "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 16192 } 16193 ], 16194 "(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [ 16195 { 16196 "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02141", 16197 "text": " If the currently bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 16198 } 16199 ], 16200 "(VK_NV_mesh_shader)+(VK_NV_corner_sampled_image)": [ 16201 { 16202 "vuid": "VUID-vkCmdDrawMeshTasksNV-flags-02142", 16203 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>." 16204 } 16205 ] 16206 }, 16207 "vkCmdDrawMeshTasksIndirectNV": { 16208 "(VK_NV_mesh_shader)": [ 16209 { 16210 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02143", 16211 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 16212 }, 16213 { 16214 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02144", 16215 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 16216 }, 16217 { 16218 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-offset-02145", 16219 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 16220 }, 16221 { 16222 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02146", 16223 "text": " If <code>drawCount</code> is greater than <code>1</code>, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>)" 16224 }, 16225 { 16226 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02147", 16227 "text": " If the <a href=\"#features-multiDrawIndirect\">multi-draw indirect</a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>" 16228 }, 16229 { 16230 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02148", 16231 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 16232 }, 16233 { 16234 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-subpass-02149", 16235 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 16236 }, 16237 { 16238 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02150", 16239 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 16240 }, 16241 { 16242 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02151", 16243 "text": " For each push constant that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 16244 }, 16245 { 16246 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02152", 16247 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the currently bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>" 16248 }, 16249 { 16250 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02153", 16251 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have valid buffers bound" 16252 }, 16253 { 16254 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02154", 16255 "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 16256 }, 16257 { 16258 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02155", 16259 "text": " If the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer" 16260 }, 16261 { 16262 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02156", 16263 "text": " If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + <code>sizeof</code>(<a href=\"#VkDrawMeshTasksIndirectCommandNV\">VkDrawMeshTasksIndirectCommandNV</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 16264 }, 16265 { 16266 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157", 16267 "text": " If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <code>offset</code> + <code>sizeof</code>(<a href=\"#VkDrawMeshTasksIndirectCommandNV\">VkDrawMeshTasksIndirectCommandNV</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 16268 }, 16269 { 16270 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02158", 16271 "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>" 16272 }, 16273 { 16274 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02159", 16275 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 16276 }, 16277 { 16278 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02160", 16279 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 16280 }, 16281 { 16282 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02161", 16283 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 16284 }, 16285 { 16286 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02162", 16287 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 16288 }, 16289 { 16290 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02163", 16291 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set" 16292 }, 16293 { 16294 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02164", 16295 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set" 16296 }, 16297 { 16298 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-linearTilingFeatures-02165", 16299 "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>" 16300 }, 16301 { 16302 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02166", 16303 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command." 16304 }, 16305 { 16306 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter", 16307 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 16308 }, 16309 { 16310 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter", 16311 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 16312 }, 16313 { 16314 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-recording", 16315 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 16316 }, 16317 { 16318 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-cmdpool", 16319 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 16320 }, 16321 { 16322 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderpass", 16323 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 16324 }, 16325 { 16326 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commonparent", 16327 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 16328 } 16329 ], 16330 "(VK_NV_mesh_shader)+(VK_IMG_filter_cubic)": [ 16331 { 16332 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-linearTilingFeatures-02167", 16333 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports cubic filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>" 16334 }, 16335 { 16336 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02168", 16337 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 16338 } 16339 ], 16340 "(VK_NV_mesh_shader)+(VK_KHR_multiview)": [ 16341 { 16342 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02169", 16343 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>." 16344 } 16345 ], 16346 "(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [ 16347 { 16348 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02170", 16349 "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 16350 }, 16351 { 16352 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02171", 16353 "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer." 16354 }, 16355 { 16356 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02172", 16357 "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 16358 } 16359 ], 16360 "(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [ 16361 { 16362 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02173", 16363 "text": " If the currently bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 16364 } 16365 ], 16366 "(VK_NV_mesh_shader)+(VK_NV_corner_sampled_image)": [ 16367 { 16368 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-flags-02174", 16369 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>." 16370 } 16371 ] 16372 }, 16373 "VkDrawMeshTasksIndirectCommandNV": { 16374 "(VK_NV_mesh_shader)": [ 16375 { 16376 "vuid": "VUID-VkDrawMeshTasksIndirectCommandNV-taskCount-02175", 16377 "text": " <code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>" 16378 } 16379 ] 16380 }, 16381 "vkCmdDrawMeshTasksIndirectCountNV": { 16382 "(VK_NV_mesh_shader)": [ 16383 { 16384 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02176", 16385 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 16386 }, 16387 { 16388 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02177", 16389 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 16390 }, 16391 { 16392 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02178", 16393 "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 16394 }, 16395 { 16396 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02179", 16397 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 16398 }, 16399 { 16400 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-offset-02180", 16401 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 16402 }, 16403 { 16404 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-02181", 16405 "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 16406 }, 16407 { 16408 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182", 16409 "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>)" 16410 }, 16411 { 16412 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183", 16413 "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) + <code>offset</code> + <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 16414 }, 16415 { 16416 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02184", 16417 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 16418 }, 16419 { 16420 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-02185", 16421 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>." 16422 }, 16423 { 16424 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02186", 16425 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 16426 }, 16427 { 16428 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02187", 16429 "text": " For each push constant that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 16430 }, 16431 { 16432 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02188", 16433 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the currently bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>" 16434 }, 16435 { 16436 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02189", 16437 "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 16438 }, 16439 { 16440 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02190", 16441 "text": " If the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer" 16442 }, 16443 { 16444 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02191", 16445 "text": " If the count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 16446 }, 16447 { 16448 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02192", 16449 "text": " If the count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <code>offset</code> + <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 16450 }, 16451 { 16452 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02193", 16453 "text": " The count stored in <code>countBuffer</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>" 16454 }, 16455 { 16456 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02194", 16457 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 16458 }, 16459 { 16460 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02195", 16461 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 16462 }, 16463 { 16464 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02196", 16465 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 16466 }, 16467 { 16468 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02197", 16469 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 16470 }, 16471 { 16472 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02198", 16473 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set" 16474 }, 16475 { 16476 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02199", 16477 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set" 16478 }, 16479 { 16480 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-linearTilingFeatures-02200", 16481 "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>" 16482 }, 16483 { 16484 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02201", 16485 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command." 16486 }, 16487 { 16488 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter", 16489 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 16490 }, 16491 { 16492 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter", 16493 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 16494 }, 16495 { 16496 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-parameter", 16497 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 16498 }, 16499 { 16500 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-recording", 16501 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 16502 }, 16503 { 16504 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-cmdpool", 16505 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 16506 }, 16507 { 16508 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderpass", 16509 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 16510 }, 16511 { 16512 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent", 16513 "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 16514 } 16515 ], 16516 "(VK_NV_mesh_shader)+(VK_KHR_multiview)": [ 16517 { 16518 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02202", 16519 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>." 16520 } 16521 ], 16522 "(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [ 16523 { 16524 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02203", 16525 "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 16526 }, 16527 { 16528 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02204", 16529 "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer." 16530 }, 16531 { 16532 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02205", 16533 "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 16534 } 16535 ], 16536 "(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [ 16537 { 16538 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02206", 16539 "text": " If the currently bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 16540 } 16541 ] 16542 }, 16543 "VkPipelineVertexInputStateCreateInfo": { 16544 "core": [ 16545 { 16546 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613", 16547 "text": " <code>vertexBindingDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>" 16548 }, 16549 { 16550 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614", 16551 "text": " <code>vertexAttributeDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>" 16552 }, 16553 { 16554 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-binding-00615", 16555 "text": " For every <code>binding</code> specified by each element of <code>pVertexAttributeDescriptions</code>, a <code>VkVertexInputBindingDescription</code> <strong class=\"purple\">must</strong> exist in <code>pVertexBindingDescriptions</code> with the same value of <code>binding</code>" 16556 }, 16557 { 16558 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616", 16559 "text": " All elements of <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> describe distinct binding numbers" 16560 }, 16561 { 16562 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617", 16563 "text": " All elements of <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> describe distinct attribute locations" 16564 }, 16565 { 16566 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-sType-sType", 16567 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO</code>" 16568 }, 16569 { 16570 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext", 16571 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoEXT\">VkPipelineVertexInputDivisorStateCreateInfoEXT</a>" 16572 }, 16573 { 16574 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask", 16575 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 16576 }, 16577 { 16578 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter", 16579 "text": " If <code>vertexBindingDescriptionCount</code> is not <code>0</code>, <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDescriptionCount</code> valid <code>VkVertexInputBindingDescription</code> structures" 16580 }, 16581 { 16582 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter", 16583 "text": " If <code>vertexAttributeDescriptionCount</code> is not <code>0</code>, <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexAttributeDescriptionCount</code> valid <code>VkVertexInputAttributeDescription</code> structures" 16584 } 16585 ] 16586 }, 16587 "VkVertexInputBindingDescription": { 16588 "core": [ 16589 { 16590 "vuid": "VUID-VkVertexInputBindingDescription-binding-00618", 16591 "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>" 16592 }, 16593 { 16594 "vuid": "VUID-VkVertexInputBindingDescription-stride-00619", 16595 "text": " <code>stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindingStride</code>" 16596 }, 16597 { 16598 "vuid": "VUID-VkVertexInputBindingDescription-inputRate-parameter", 16599 "text": " <code>inputRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVertexInputRate\">VkVertexInputRate</a> value" 16600 } 16601 ] 16602 }, 16603 "VkVertexInputAttributeDescription": { 16604 "core": [ 16605 { 16606 "vuid": "VUID-VkVertexInputAttributeDescription-location-00620", 16607 "text": " <code>location</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>" 16608 }, 16609 { 16610 "vuid": "VUID-VkVertexInputAttributeDescription-binding-00621", 16611 "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>" 16612 }, 16613 { 16614 "vuid": "VUID-VkVertexInputAttributeDescription-offset-00622", 16615 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributeOffset</code>" 16616 }, 16617 { 16618 "vuid": "VUID-VkVertexInputAttributeDescription-format-00623", 16619 "text": " <code>format</code> <strong class=\"purple\">must</strong> be allowed as a vertex buffer format, as specified by the <code>VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>" 16620 }, 16621 { 16622 "vuid": "VUID-VkVertexInputAttributeDescription-format-parameter", 16623 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 16624 } 16625 ] 16626 }, 16627 "vkCmdBindVertexBuffers": { 16628 "core": [ 16629 { 16630 "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00624", 16631 "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>" 16632 }, 16633 { 16634 "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00625", 16635 "text": " The sum of <code>firstBinding</code> and <code>bindingCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>" 16636 }, 16637 { 16638 "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-00626", 16639 "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be less than the size of the corresponding element in <code>pBuffers</code>" 16640 }, 16641 { 16642 "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00627", 16643 "text": " All elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_VERTEX_BUFFER_BIT</code> flag" 16644 }, 16645 { 16646 "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00628", 16647 "text": " Each element of <code>pBuffers</code> that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 16648 }, 16649 { 16650 "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-parameter", 16651 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 16652 }, 16653 { 16654 "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-parameter", 16655 "text": " <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <code>VkBuffer</code> handles" 16656 }, 16657 { 16658 "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-parameter", 16659 "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values" 16660 }, 16661 { 16662 "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-recording", 16663 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 16664 }, 16665 { 16666 "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-cmdpool", 16667 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 16668 }, 16669 { 16670 "vuid": "VUID-vkCmdBindVertexBuffers-bindingCount-arraylength", 16671 "text": " <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 16672 }, 16673 { 16674 "vuid": "VUID-vkCmdBindVertexBuffers-commonparent", 16675 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 16676 } 16677 ] 16678 }, 16679 "VkPipelineVertexInputDivisorStateCreateInfoEXT": { 16680 "(VK_EXT_vertex_attribute_divisor)": [ 16681 { 16682 "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-sType-sType", 16683 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT</code>" 16684 }, 16685 { 16686 "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-pVertexBindingDivisors-parameter", 16687 "text": " <code>pVertexBindingDivisors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDivisorCount</code> <code>VkVertexInputBindingDivisorDescriptionEXT</code> structures" 16688 }, 16689 { 16690 "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-vertexBindingDivisorCount-arraylength", 16691 "text": " <code>vertexBindingDivisorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 16692 } 16693 ] 16694 }, 16695 "VkVertexInputBindingDivisorDescriptionEXT": { 16696 "(VK_EXT_vertex_attribute_divisor)": [ 16697 { 16698 "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-binding-01869", 16699 "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>" 16700 }, 16701 { 16702 "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateZeroDivisor-02228", 16703 "text": " If the <code>vertexAttributeInstanceRateZeroDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 16704 }, 16705 { 16706 "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateDivisor-02229", 16707 "text": " If the <code>vertexAttributeInstanceRateDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> be <code>1</code>" 16708 }, 16709 { 16710 "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-divisor-01870", 16711 "text": " <code>divisor</code> <strong class=\"purple\">must</strong> be a value between <code>0</code> and <code>VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</code>::<code>maxVertexAttribDivisor</code>, inclusive." 16712 }, 16713 { 16714 "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-inputRate-01871", 16715 "text": " <a href=\"#VkVertexInputBindingDescription\">VkVertexInputBindingDescription</a>::<code>inputRate</code> <strong class=\"purple\">must</strong> be of type <code>VK_VERTEX_INPUT_RATE_INSTANCE</code> for this <code>binding</code>." 16716 } 16717 ] 16718 }, 16719 "VkPipelineTessellationStateCreateInfo": { 16720 "core": [ 16721 { 16722 "vuid": "VUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214", 16723 "text": " <code>patchControlPoints</code> <strong class=\"purple\">must</strong> be greater than zero and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTessellationPatchSize</code>" 16724 }, 16725 { 16726 "vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-sType", 16727 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO</code>" 16728 }, 16729 { 16730 "vuid": "VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext", 16731 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineTessellationDomainOriginStateCreateInfo\">VkPipelineTessellationDomainOriginStateCreateInfo</a>" 16732 }, 16733 { 16734 "vuid": "VUID-VkPipelineTessellationStateCreateInfo-flags-zerobitmask", 16735 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 16736 } 16737 ] 16738 }, 16739 "VkPipelineTessellationDomainOriginStateCreateInfo": { 16740 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 16741 { 16742 "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-sType-sType", 16743 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO</code>" 16744 }, 16745 { 16746 "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-domainOrigin-parameter", 16747 "text": " <code>domainOrigin</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTessellationDomainOrigin\">VkTessellationDomainOrigin</a> value" 16748 } 16749 ] 16750 }, 16751 "vkCmdBindTransformFeedbackBuffersEXT": { 16752 "(VK_EXT_transform_feedback)": [ 16753 { 16754 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355", 16755 "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled" 16756 }, 16757 { 16758 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02356", 16759 "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>" 16760 }, 16761 { 16762 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02357", 16763 "text": " The sum of <code>firstBinding</code> and <code>bindingCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>" 16764 }, 16765 { 16766 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02358", 16767 "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be less than the size of the corresponding element in <code>pBuffers</code>" 16768 }, 16769 { 16770 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02359", 16771 "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be a multiple of 4" 16772 }, 16773 { 16774 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02360", 16775 "text": " All elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT</code> flag" 16776 }, 16777 { 16778 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSize-02361", 16779 "text": " If the optional <code>pSize</code> array is specified, each element of <code>pSizes</code> <strong class=\"purple\">must</strong> either be <code>VK_WHOLE_SIZE</code>, or be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBufferSize</code>" 16780 }, 16781 { 16782 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-02362", 16783 "text": " All elements of <code>pSizes</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the corresponding buffer in <code>pBuffers</code>" 16784 }, 16785 { 16786 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02363", 16787 "text": " All elements of <code>pOffsets</code> plus <code>pSizes</code>, where the <code>pSizes</code>, element is not <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to the size of the corresponding element in <code>pBuffers</code>" 16788 }, 16789 { 16790 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02364", 16791 "text": " Each element of <code>pBuffers</code> that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 16792 }, 16793 { 16794 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-None-02365", 16795 "text": " Transform feedback <strong class=\"purple\">must</strong> not be active when the <code>vkCmdBindTransformFeedbackBuffersEXT</code> command is recorded" 16796 }, 16797 { 16798 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter", 16799 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 16800 }, 16801 { 16802 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-parameter", 16803 "text": " <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <code>VkBuffer</code> handles" 16804 }, 16805 { 16806 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-parameter", 16807 "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values" 16808 }, 16809 { 16810 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-parameter", 16811 "text": " If <code>pSizes</code> is not <code>NULL</code>, <code>pSizes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values" 16812 }, 16813 { 16814 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-recording", 16815 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 16816 }, 16817 { 16818 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-cmdpool", 16819 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 16820 }, 16821 { 16822 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength", 16823 "text": " If <code>pSizes</code> is not <code>NULL</code>, <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 16824 }, 16825 { 16826 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commonparent", 16827 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 16828 } 16829 ] 16830 }, 16831 "vkCmdBeginTransformFeedbackEXT": { 16832 "(VK_EXT_transform_feedback)": [ 16833 { 16834 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-transformFeedback-02366", 16835 "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled" 16836 }, 16837 { 16838 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02367", 16839 "text": " Transform feedback <strong class=\"purple\">must</strong> not be active" 16840 }, 16841 { 16842 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02368", 16843 "text": " <code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>" 16844 }, 16845 { 16846 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02369", 16847 "text": " The sum of <code>firstCounterBuffer</code> and <code>counterBufferCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>" 16848 }, 16849 { 16850 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-counterBufferCount-02607", 16851 "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBuffers</code> is not <code>NULL</code>, <code>pCounterBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkBuffer</code> handles that are either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 16852 }, 16853 { 16854 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-02370", 16855 "text": " For each buffer handle in the array, if it is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> reference a buffer large enough to hold 4 bytes at the corresponding offset from the <code>pCounterBufferOffsets</code> array" 16856 }, 16857 { 16858 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffer-02371", 16859 "text": " If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>" 16860 }, 16861 { 16862 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffers-02372", 16863 "text": " For each buffer handle in the <code>pCounterBuffers</code> array that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing <code>VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT</code>" 16864 }, 16865 { 16866 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter", 16867 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 16868 }, 16869 { 16870 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-parameter", 16871 "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBufferOffsets</code> is not <code>NULL</code>, <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkDeviceSize</code> values" 16872 }, 16873 { 16874 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-recording", 16875 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 16876 }, 16877 { 16878 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-cmdpool", 16879 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 16880 }, 16881 { 16882 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-renderpass", 16883 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 16884 }, 16885 { 16886 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commonparent", 16887 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCounterBuffers</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 16888 } 16889 ], 16890 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [ 16891 { 16892 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02373", 16893 "text": " Transform feedback <strong class=\"purple\">must</strong> not be made active in a render pass instance with multiview enabled" 16894 } 16895 ] 16896 }, 16897 "vkCmdEndTransformFeedbackEXT": { 16898 "(VK_EXT_transform_feedback)": [ 16899 { 16900 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374", 16901 "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled" 16902 }, 16903 { 16904 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-None-02375", 16905 "text": " Transform feedback <strong class=\"purple\">must</strong> be active" 16906 }, 16907 { 16908 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376", 16909 "text": " <code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>" 16910 }, 16911 { 16912 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377", 16913 "text": " The sum of <code>firstCounterBuffer</code> and <code>counterBufferCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>" 16914 }, 16915 { 16916 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-counterBufferCount-02608", 16917 "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBuffers</code> is not <code>NULL</code>, <code>pCounterBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkBuffer</code> handles that are either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 16918 }, 16919 { 16920 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378", 16921 "text": " For each buffer handle in the array, if it is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> reference a buffer large enough to hold 4 bytes at the corresponding offset from the <code>pCounterBufferOffsets</code> array" 16922 }, 16923 { 16924 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379", 16925 "text": " If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>" 16926 }, 16927 { 16928 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380", 16929 "text": " For each buffer handle in the <code>pCounterBuffers</code> array that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing <code>VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT</code>" 16930 }, 16931 { 16932 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter", 16933 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 16934 }, 16935 { 16936 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-parameter", 16937 "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBufferOffsets</code> is not <code>NULL</code>, <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkDeviceSize</code> values" 16938 }, 16939 { 16940 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-recording", 16941 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 16942 }, 16943 { 16944 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-cmdpool", 16945 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 16946 }, 16947 { 16948 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-renderpass", 16949 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 16950 }, 16951 { 16952 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commonparent", 16953 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCounterBuffers</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 16954 } 16955 ] 16956 }, 16957 "VkPipelineViewportSwizzleStateCreateInfoNV": { 16958 "(VK_NV_viewport_swizzle)": [ 16959 { 16960 "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-01215", 16961 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> match the <code>viewportCount</code> set in <code>VkPipelineViewportStateCreateInfo</code>" 16962 }, 16963 { 16964 "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-sType-sType", 16965 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV</code>" 16966 }, 16967 { 16968 "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-flags-zerobitmask", 16969 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 16970 }, 16971 { 16972 "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-pViewportSwizzles-parameter", 16973 "text": " <code>pViewportSwizzles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkViewportSwizzleNV</code> structures" 16974 }, 16975 { 16976 "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-arraylength", 16977 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 16978 } 16979 ] 16980 }, 16981 "VkViewportSwizzleNV": { 16982 "(VK_NV_viewport_swizzle)": [ 16983 { 16984 "vuid": "VUID-VkViewportSwizzleNV-x-parameter", 16985 "text": " <code>x</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value" 16986 }, 16987 { 16988 "vuid": "VUID-VkViewportSwizzleNV-y-parameter", 16989 "text": " <code>y</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value" 16990 }, 16991 { 16992 "vuid": "VUID-VkViewportSwizzleNV-z-parameter", 16993 "text": " <code>z</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value" 16994 }, 16995 { 16996 "vuid": "VUID-VkViewportSwizzleNV-w-parameter", 16997 "text": " <code>w</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value" 16998 } 16999 ] 17000 }, 17001 "VkPipelineViewportWScalingStateCreateInfoNV": { 17002 "(VK_NV_clip_space_w_scaling)": [ 17003 { 17004 "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-sType-sType", 17005 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV</code>" 17006 }, 17007 { 17008 "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-viewportCount-arraylength", 17009 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 17010 } 17011 ] 17012 }, 17013 "vkCmdSetViewportWScalingNV": { 17014 "(VK_NV_clip_space_w_scaling)": [ 17015 { 17016 "vuid": "VUID-vkCmdSetViewportWScalingNV-None-01322", 17017 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled" 17018 }, 17019 { 17020 "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01323", 17021 "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxViewports</code>" 17022 }, 17023 { 17024 "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01324", 17025 "text": " The sum of <code>firstViewport</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxViewports</code>, inclusive" 17026 }, 17027 { 17028 "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter", 17029 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 17030 }, 17031 { 17032 "vuid": "VUID-vkCmdSetViewportWScalingNV-pViewportWScalings-parameter", 17033 "text": " <code>pViewportWScalings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> <code>VkViewportWScalingNV</code> structures" 17034 }, 17035 { 17036 "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-recording", 17037 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17038 }, 17039 { 17040 "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-cmdpool", 17041 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 17042 }, 17043 { 17044 "vuid": "VUID-vkCmdSetViewportWScalingNV-viewportCount-arraylength", 17045 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 17046 } 17047 ] 17048 }, 17049 "VkPipelineViewportStateCreateInfo": { 17050 "core": [ 17051 { 17052 "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216", 17053 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 17054 }, 17055 { 17056 "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217", 17057 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 17058 }, 17059 { 17060 "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218", 17061 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive" 17062 }, 17063 { 17064 "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219", 17065 "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive" 17066 }, 17067 { 17068 "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01220", 17069 "text": " <code>scissorCount</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be identical" 17070 }, 17071 { 17072 "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-sType", 17073 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO</code>" 17074 }, 17075 { 17076 "vuid": "VUID-VkPipelineViewportStateCreateInfo-pNext-pNext", 17077 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineViewportCoarseSampleOrderStateCreateInfoNV\">VkPipelineViewportCoarseSampleOrderStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>, or <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>" 17078 }, 17079 { 17080 "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-unique", 17081 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 17082 }, 17083 { 17084 "vuid": "VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask", 17085 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 17086 }, 17087 { 17088 "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-arraylength", 17089 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 17090 }, 17091 { 17092 "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-arraylength", 17093 "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 17094 } 17095 ], 17096 "(VK_NV_clip_space_w_scaling)": [ 17097 { 17098 "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726", 17099 "text": " If the <code>viewportWScalingEnable</code> member of a <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure chained to the <code>pNext</code> chain is <code>VK_TRUE</code>, the <code>viewportCount</code> member of the <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure <strong class=\"purple\">must</strong> be equal to <code>viewportCount</code>" 17100 } 17101 ] 17102 }, 17103 "vkCmdSetViewport": { 17104 "core": [ 17105 { 17106 "vuid": "VUID-vkCmdSetViewport-None-01221", 17107 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled" 17108 }, 17109 { 17110 "vuid": "VUID-vkCmdSetViewport-firstViewport-01222", 17111 "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>" 17112 }, 17113 { 17114 "vuid": "VUID-vkCmdSetViewport-firstViewport-01223", 17115 "text": " The sum of <code>firstViewport</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive" 17116 }, 17117 { 17118 "vuid": "VUID-vkCmdSetViewport-firstViewport-01224", 17119 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstViewport</code> <strong class=\"purple\">must</strong> be <code>0</code>" 17120 }, 17121 { 17122 "vuid": "VUID-vkCmdSetViewport-viewportCount-01225", 17123 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 17124 }, 17125 { 17126 "vuid": "VUID-vkCmdSetViewport-commandBuffer-parameter", 17127 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 17128 }, 17129 { 17130 "vuid": "VUID-vkCmdSetViewport-pViewports-parameter", 17131 "text": " <code>pViewports</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkViewport</code> structures" 17132 }, 17133 { 17134 "vuid": "VUID-vkCmdSetViewport-commandBuffer-recording", 17135 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17136 }, 17137 { 17138 "vuid": "VUID-vkCmdSetViewport-commandBuffer-cmdpool", 17139 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 17140 }, 17141 { 17142 "vuid": "VUID-vkCmdSetViewport-viewportCount-arraylength", 17143 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 17144 } 17145 ] 17146 }, 17147 "VkViewport": { 17148 "core": [ 17149 { 17150 "vuid": "VUID-VkViewport-width-01770", 17151 "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>" 17152 }, 17153 { 17154 "vuid": "VUID-VkViewport-width-01771", 17155 "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[0]" 17156 }, 17157 { 17158 "vuid": "VUID-VkViewport-height-01773", 17159 "text": " The absolute value of <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[1]" 17160 }, 17161 { 17162 "vuid": "VUID-VkViewport-x-01774", 17163 "text": " <code>x</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]" 17164 }, 17165 { 17166 "vuid": "VUID-VkViewport-x-01232", 17167 "text": " <span class=\"eq\">(<code>x</code> + <code>width</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]" 17168 }, 17169 { 17170 "vuid": "VUID-VkViewport-y-01775", 17171 "text": " <code>y</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]" 17172 }, 17173 { 17174 "vuid": "VUID-VkViewport-y-01233", 17175 "text": " <span class=\"eq\">(<code>y</code> + <code>height</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]" 17176 } 17177 ], 17178 "!(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [ 17179 { 17180 "vuid": "VUID-VkViewport-height-01772", 17181 "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>" 17182 } 17183 ], 17184 "(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [ 17185 { 17186 "vuid": "VUID-VkViewport-y-01776", 17187 "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]" 17188 }, 17189 { 17190 "vuid": "VUID-VkViewport-y-01777", 17191 "text": " <span class=\"eq\">(<code>y</code> + <code>height</code>)</span> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]" 17192 } 17193 ], 17194 "(VK_EXT_depth_range_unrestricted)": [ 17195 { 17196 "vuid": "VUID-VkViewport-minDepth-01234", 17197 "text": " Unless <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>minDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 17198 }, 17199 { 17200 "vuid": "VUID-VkViewport-maxDepth-01235", 17201 "text": " Unless <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>maxDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 17202 } 17203 ], 17204 "!(VK_EXT_depth_range_unrestricted)": [ 17205 { 17206 "vuid": "VUID-VkViewport-minDepth-02540", 17207 "text": " <code>minDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 17208 }, 17209 { 17210 "vuid": "VUID-VkViewport-maxDepth-02541", 17211 "text": " <code>maxDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 17212 } 17213 ] 17214 }, 17215 "VkPipelineRasterizationStateCreateInfo": { 17216 "core": [ 17217 { 17218 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782", 17219 "text": " If the <a href=\"#features-depthClamp\">depth clamping</a> feature is not enabled, <code>depthClampEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 17220 }, 17221 { 17222 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-sType", 17223 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO</code>" 17224 }, 17225 { 17226 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-pNext-pNext", 17227 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineRasterizationConservativeStateCreateInfoEXT\">VkPipelineRasterizationConservativeStateCreateInfoEXT</a>, <a href=\"#VkPipelineRasterizationDepthClipStateCreateInfoEXT\">VkPipelineRasterizationDepthClipStateCreateInfoEXT</a>, <a href=\"#VkPipelineRasterizationStateRasterizationOrderAMD\">VkPipelineRasterizationStateRasterizationOrderAMD</a>, or <a href=\"#VkPipelineRasterizationStateStreamCreateInfoEXT\">VkPipelineRasterizationStateStreamCreateInfoEXT</a>" 17228 }, 17229 { 17230 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-unique", 17231 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 17232 }, 17233 { 17234 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask", 17235 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 17236 }, 17237 { 17238 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter", 17239 "text": " <code>polygonMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPolygonMode\">VkPolygonMode</a> value" 17240 }, 17241 { 17242 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter", 17243 "text": " <code>cullMode</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCullModeFlagBits\">VkCullModeFlagBits</a> values" 17244 }, 17245 { 17246 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter", 17247 "text": " <code>frontFace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFrontFace\">VkFrontFace</a> value" 17248 } 17249 ], 17250 "!(VK_NV_fill_rectangle)": [ 17251 { 17252 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01413", 17253 "text": " If the <a href=\"#features-fillModeNonSolid\">non-solid fill modes</a> feature is not enabled, <code>polygonMode</code> <strong class=\"purple\">must</strong> be <code>VK_POLYGON_MODE_FILL</code>" 17254 } 17255 ], 17256 "(VK_NV_fill_rectangle)": [ 17257 { 17258 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507", 17259 "text": " If the <a href=\"#features-fillModeNonSolid\">non-solid fill modes</a> feature is not enabled, <code>polygonMode</code> <strong class=\"purple\">must</strong> be <code>VK_POLYGON_MODE_FILL</code> or <code>VK_POLYGON_MODE_FILL_RECTANGLE_NV</code>" 17260 }, 17261 { 17262 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414", 17263 "text": " If the <code><a href=\"#VK_NV_fill_rectangle\">VK_NV_fill_rectangle</a></code> extension is not enabled, <code>polygonMode</code> <strong class=\"purple\">must</strong> not be <code>VK_POLYGON_MODE_FILL_RECTANGLE_NV</code>" 17264 } 17265 ] 17266 }, 17267 "VkPipelineRasterizationDepthClipStateCreateInfoEXT": { 17268 "(VK_EXT_depth_clip_enable)": [ 17269 { 17270 "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-sType-sType", 17271 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT</code>" 17272 }, 17273 { 17274 "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-flags-zerobitmask", 17275 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 17276 } 17277 ] 17278 }, 17279 "VkPipelineMultisampleStateCreateInfo": { 17280 "core": [ 17281 { 17282 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784", 17283 "text": " If the <a href=\"#features-sampleRateShading\">sample rate shading</a> feature is not enabled, <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 17284 }, 17285 { 17286 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785", 17287 "text": " If the <a href=\"#features-alphaToOne\">alpha to one</a> feature is not enabled, <code>alphaToOneEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 17288 }, 17289 { 17290 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786", 17291 "text": " <code>minSampleShading</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>" 17292 }, 17293 { 17294 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-sType", 17295 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO</code>" 17296 }, 17297 { 17298 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext", 17299 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineCoverageModulationStateCreateInfoNV\">VkPipelineCoverageModulationStateCreateInfoNV</a>, <a href=\"#VkPipelineCoverageToColorStateCreateInfoNV\">VkPipelineCoverageToColorStateCreateInfoNV</a>, or <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>" 17300 }, 17301 { 17302 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-unique", 17303 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 17304 }, 17305 { 17306 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask", 17307 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 17308 }, 17309 { 17310 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter", 17311 "text": " <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 17312 }, 17313 { 17314 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter", 17315 "text": " If <code>pSampleMask</code> is not <code>NULL</code>, <code>pSampleMask</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of \\(\\lceil{\\mathit{rasterizationSamples} \\over 32}\\rceil\\) <code>VkSampleMask</code> values" 17316 } 17317 ], 17318 "(VK_NV_framebuffer_mixed_samples)": [ 17319 { 17320 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415", 17321 "text": " If the <code>VK_NV_framebuffer_mixed_samples</code> extension is enabled, and if the subpass has any color attachments and <code>rasterizationSamples</code> is greater than the number of color samples, then <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 17322 } 17323 ] 17324 }, 17325 "VkPipelineRasterizationStateStreamCreateInfoEXT": { 17326 "(VK_EXT_transform_feedback)": [ 17327 { 17328 "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324", 17329 "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>geometryStreams</code> <strong class=\"purple\">must</strong> be enabled" 17330 }, 17331 { 17332 "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02325", 17333 "text": " <code>rasterizationStream</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>::<code>maxTransformFeedbackStreams</code>" 17334 }, 17335 { 17336 "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02326", 17337 "text": " <code>rasterizationStream</code> <strong class=\"purple\">must</strong> be zero if <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackRasterizationStreamSelect</code> is <code>VK_FALSE</code>" 17338 }, 17339 { 17340 "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-sType-sType", 17341 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT</code>" 17342 }, 17343 { 17344 "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-flags-zerobitmask", 17345 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 17346 } 17347 ] 17348 }, 17349 "VkPipelineRasterizationStateRasterizationOrderAMD": { 17350 "(VK_AMD_rasterization_order)": [ 17351 { 17352 "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-sType-sType", 17353 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD</code>" 17354 }, 17355 { 17356 "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-rasterizationOrder-parameter", 17357 "text": " <code>rasterizationOrder</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRasterizationOrderAMD\">VkRasterizationOrderAMD</a> value" 17358 } 17359 ] 17360 }, 17361 "VkPipelineSampleLocationsStateCreateInfoEXT": { 17362 "(VK_EXT_sample_locations)": [ 17363 { 17364 "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sType-sType", 17365 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT</code>" 17366 }, 17367 { 17368 "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sampleLocationsInfo-parameter", 17369 "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampleLocationsInfoEXT</code> structure" 17370 } 17371 ] 17372 }, 17373 "VkSampleLocationsInfoEXT": { 17374 "(VK_EXT_sample_locations)": [ 17375 { 17376 "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-01526", 17377 "text": " <code>sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> be a bit value that is set in <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>sampleLocationSampleCounts</code>" 17378 }, 17379 { 17380 "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-01527", 17381 "text": " <code>sampleLocationsCount</code> <strong class=\"purple\">must</strong> equal <span class=\"eq\"><code>sampleLocationsPerPixel</code> {times} <code>sampleLocationGridSize.width</code> {times} <code>sampleLocationGridSize.height</code></span>" 17382 }, 17383 { 17384 "vuid": "VUID-VkSampleLocationsInfoEXT-sType-sType", 17385 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT</code>" 17386 }, 17387 { 17388 "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-parameter", 17389 "text": " If <code>sampleLocationsPerPixel</code> is not <code>0</code>, <code>sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 17390 }, 17391 { 17392 "vuid": "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter", 17393 "text": " If <code>sampleLocationsCount</code> is not <code>0</code>, <code>pSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sampleLocationsCount</code> <code>VkSampleLocationEXT</code> structures" 17394 } 17395 ] 17396 }, 17397 "vkCmdSetSampleLocationsEXT": { 17398 "(VK_EXT_sample_locations)": [ 17399 { 17400 "vuid": "VUID-vkCmdSetSampleLocationsEXT-None-01528", 17401 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled" 17402 }, 17403 { 17404 "vuid": "VUID-vkCmdSetSampleLocationsEXT-sampleLocationsPerPixel-01529", 17405 "text": " The <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with" 17406 }, 17407 { 17408 "vuid": "VUID-vkCmdSetSampleLocationsEXT-variableSampleLocations-01530", 17409 "text": " If <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>variableSampleLocations</code> is <code>VK_FALSE</code> then the current render pass <strong class=\"purple\">must</strong> have been begun by specifying a <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a> structure whose <code>pPostSubpassSampleLocations</code> member contains an element with a <code>subpassIndex</code> matching the current subpass index and the <code>sampleLocationsInfo</code> member of that element <strong class=\"purple\">must</strong> match the sample locations state pointed to by <code>pSampleLocationsInfo</code>" 17410 }, 17411 { 17412 "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter", 17413 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 17414 }, 17415 { 17416 "vuid": "VUID-vkCmdSetSampleLocationsEXT-pSampleLocationsInfo-parameter", 17417 "text": " <code>pSampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSampleLocationsInfoEXT</code> structure" 17418 }, 17419 { 17420 "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-recording", 17421 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17422 }, 17423 { 17424 "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-cmdpool", 17425 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 17426 } 17427 ] 17428 }, 17429 "VkPipelineViewportShadingRateImageStateCreateInfoNV": { 17430 "(VK_NV_shading_rate_image)": [ 17431 { 17432 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02054", 17433 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>" 17434 }, 17435 { 17436 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02055", 17437 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>" 17438 }, 17439 { 17440 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-shadingRateImageEnable-02056", 17441 "text": " If <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, <code>viewportCount</code> <strong class=\"purple\">must</strong> be equal to the <code>viewportCount</code> member of <code>VkPipelineViewportStateCreateInfo</code>" 17442 }, 17443 { 17444 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-pDynamicStates-02057", 17445 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code>, <code>pShadingRatePalettes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> <code>VkShadingRatePaletteNV</code> structures" 17446 }, 17447 { 17448 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-sType-sType", 17449 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV</code>" 17450 }, 17451 { 17452 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-pShadingRatePalettes-parameter", 17453 "text": " If <code>viewportCount</code> is not <code>0</code>, and <code>pShadingRatePalettes</code> is not <code>NULL</code>, <code>pShadingRatePalettes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkShadingRatePaletteNV</code> structures" 17454 } 17455 ] 17456 }, 17457 "vkCmdBindShadingRateImageNV": { 17458 "(VK_NV_shading_rate_image)": [ 17459 { 17460 "vuid": "VUID-vkCmdBindShadingRateImageNV-None-02058", 17461 "text": " The <a href=\"#features-shadingRateImage\">shading rate image</a> feature <strong class=\"purple\">must</strong> be enabled." 17462 }, 17463 { 17464 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02059", 17465 "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle of type <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>." 17466 }, 17467 { 17468 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02060", 17469 "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> have a format of <code>VK_FORMAT_R8_UINT</code>." 17470 }, 17471 { 17472 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02061", 17473 "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>" 17474 }, 17475 { 17476 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02062", 17477 "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageLayout</code> <strong class=\"purple\">must</strong> match the actual <a href=\"#VkImageLayout\">VkImageLayout</a> of each subresource accessible from <code>imageView</code> at the time the subresource is accessed." 17478 }, 17479 { 17480 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-02063", 17481 "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>." 17482 }, 17483 { 17484 "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter", 17485 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 17486 }, 17487 { 17488 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-parameter", 17489 "text": " <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> handle" 17490 }, 17491 { 17492 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-parameter", 17493 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 17494 }, 17495 { 17496 "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-recording", 17497 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17498 }, 17499 { 17500 "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-cmdpool", 17501 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 17502 }, 17503 { 17504 "vuid": "VUID-vkCmdBindShadingRateImageNV-commonparent", 17505 "text": " Both of <code>commandBuffer</code>, and <code>imageView</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 17506 } 17507 ] 17508 }, 17509 "vkCmdSetViewportShadingRatePaletteNV": { 17510 "(VK_NV_shading_rate_image)": [ 17511 { 17512 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-None-02064", 17513 "text": " The <a href=\"#features-shadingRateImage\">shading rate image</a> feature <strong class=\"purple\">must</strong> be enabled." 17514 }, 17515 { 17516 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-None-02065", 17517 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled" 17518 }, 17519 { 17520 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02066", 17521 "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>" 17522 }, 17523 { 17524 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02067", 17525 "text": " The sum of <code>firstViewport</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive" 17526 }, 17527 { 17528 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02068", 17529 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstViewport</code> <strong class=\"purple\">must</strong> be <code>0</code>" 17530 }, 17531 { 17532 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-02069", 17533 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 17534 }, 17535 { 17536 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter", 17537 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 17538 }, 17539 { 17540 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-pShadingRatePalettes-parameter", 17541 "text": " <code>pShadingRatePalettes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkShadingRatePaletteNV</code> structures" 17542 }, 17543 { 17544 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-recording", 17545 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17546 }, 17547 { 17548 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-cmdpool", 17549 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 17550 }, 17551 { 17552 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-arraylength", 17553 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 17554 } 17555 ] 17556 }, 17557 "VkShadingRatePaletteNV": { 17558 "(VK_NV_shading_rate_image)": [ 17559 { 17560 "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-02071", 17561 "text": " <code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRatePaletteSize</code>, inclusive" 17562 }, 17563 { 17564 "vuid": "VUID-VkShadingRatePaletteNV-pShadingRatePaletteEntries-parameter", 17565 "text": " <code>pShadingRatePaletteEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>shadingRatePaletteEntryCount</code> valid <a href=\"#VkShadingRatePaletteEntryNV\">VkShadingRatePaletteEntryNV</a> values" 17566 }, 17567 { 17568 "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-arraylength", 17569 "text": " <code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 17570 } 17571 ] 17572 }, 17573 "VkPipelineViewportCoarseSampleOrderStateCreateInfoNV": { 17574 "(VK_NV_shading_rate_image)": [ 17575 { 17576 "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-02072", 17577 "text": " If <code>sampleOrderType</code> is not <code>VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV</code>, <code>customSamplerOrderCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 17578 }, 17579 { 17580 "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-02234", 17581 "text": " The array <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> not contain two structures with matching values for both the <code>shadingRate</code> and <code>sampleCount</code> members." 17582 }, 17583 { 17584 "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sType-sType", 17585 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV</code>" 17586 }, 17587 { 17588 "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-parameter", 17589 "text": " <code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value" 17590 }, 17591 { 17592 "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-parameter", 17593 "text": " If <code>customSampleOrderCount</code> is not <code>0</code>, <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>customSampleOrderCount</code> valid <code>VkCoarseSampleOrderCustomNV</code> structures" 17594 } 17595 ] 17596 }, 17597 "VkCoarseSampleOrderCustomNV": { 17598 "(VK_NV_shading_rate_image)": [ 17599 { 17600 "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-02073", 17601 "text": " <code>shadingRate</code> <strong class=\"purple\">must</strong> be a shading rate that generates fragments with more than one pixel." 17602 }, 17603 { 17604 "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleCount-02074", 17605 "text": " <code>sampleCount</code> <strong class=\"purple\">must</strong> correspond to a sample count enumerated in <a href=\"#VkSampleCountFlags\">VkSampleCountFlags</a> whose corresponding bit is set in <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>framebufferNoAttachmentsSampleCounts</code>." 17606 }, 17607 { 17608 "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02075", 17609 "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be equal to the product of <code>sampleCount</code>, the fragment width for <code>shadingRate</code>, and the fragment height for <code>shadingRate</code>." 17610 }, 17611 { 17612 "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02076", 17613 "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be less than or equal to the value of <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRateMaxCoarseSamples</code>." 17614 }, 17615 { 17616 "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-02077", 17617 "text": " The array <code>pSampleLocations</code> <strong class=\"purple\">must</strong> contain exactly one entry for every combination of valid values for <code>pixelX</code>, <code>pixelY</code>, and <code>sample</code> in the structure <a href=\"#VkCoarseSampleOrderCustomNV\">VkCoarseSampleOrderCustomNV</a>." 17618 }, 17619 { 17620 "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-parameter", 17621 "text": " <code>shadingRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShadingRatePaletteEntryNV\">VkShadingRatePaletteEntryNV</a> value" 17622 }, 17623 { 17624 "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-parameter", 17625 "text": " <code>pSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sampleLocationCount</code> <code>VkCoarseSampleLocationNV</code> structures" 17626 }, 17627 { 17628 "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-arraylength", 17629 "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 17630 } 17631 ] 17632 }, 17633 "VkCoarseSampleLocationNV": { 17634 "(VK_NV_shading_rate_image)": [ 17635 { 17636 "vuid": "VUID-VkCoarseSampleLocationNV-pixelX-02078", 17637 "text": " <code>pixelX</code> <strong class=\"purple\">must</strong> be less than the width (in pixels) of the fragment." 17638 }, 17639 { 17640 "vuid": "VUID-VkCoarseSampleLocationNV-pixelY-02079", 17641 "text": " <code>pixelY</code> <strong class=\"purple\">must</strong> be less than the height (in pixels) of the fragment." 17642 }, 17643 { 17644 "vuid": "VUID-VkCoarseSampleLocationNV-sample-02080", 17645 "text": " <code>sample</code> <strong class=\"purple\">must</strong> be less than the number of coverage samples in each pixel belonging to the fragment." 17646 } 17647 ] 17648 }, 17649 "vkCmdSetCoarseSampleOrderNV": { 17650 "(VK_NV_shading_rate_image)": [ 17651 { 17652 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-02081", 17653 "text": " If <code>sampleOrderType</code> is not <code>VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV</code>, <code>customSamplerOrderCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 17654 }, 17655 { 17656 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-02235", 17657 "text": " The array <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> not contain two structures with matching values for both the <code>shadingRate</code> and <code>sampleCount</code> members." 17658 }, 17659 { 17660 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter", 17661 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 17662 }, 17663 { 17664 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-parameter", 17665 "text": " <code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value" 17666 }, 17667 { 17668 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-parameter", 17669 "text": " If <code>customSampleOrderCount</code> is not <code>0</code>, <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>customSampleOrderCount</code> valid <code>VkCoarseSampleOrderCustomNV</code> structures" 17670 }, 17671 { 17672 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-recording", 17673 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17674 }, 17675 { 17676 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-cmdpool", 17677 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 17678 } 17679 ] 17680 }, 17681 "vkCmdSetLineWidth": { 17682 "core": [ 17683 { 17684 "vuid": "VUID-vkCmdSetLineWidth-None-00787", 17685 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled" 17686 }, 17687 { 17688 "vuid": "VUID-vkCmdSetLineWidth-lineWidth-00788", 17689 "text": " If the <a href=\"#features-wideLines\">wide lines</a> feature is not enabled, <code>lineWidth</code> <strong class=\"purple\">must</strong> be <code>1.0</code>" 17690 }, 17691 { 17692 "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-parameter", 17693 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 17694 }, 17695 { 17696 "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-recording", 17697 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17698 }, 17699 { 17700 "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-cmdpool", 17701 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 17702 } 17703 ] 17704 }, 17705 "vkCmdSetDepthBias": { 17706 "core": [ 17707 { 17708 "vuid": "VUID-vkCmdSetDepthBias-None-00789", 17709 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled" 17710 }, 17711 { 17712 "vuid": "VUID-vkCmdSetDepthBias-depthBiasClamp-00790", 17713 "text": " If the <a href=\"#features-depthBiasClamp\">depth bias clamping</a> feature is not enabled, <code>depthBiasClamp</code> <strong class=\"purple\">must</strong> be <code>0.0</code>" 17714 }, 17715 { 17716 "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-parameter", 17717 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 17718 }, 17719 { 17720 "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-recording", 17721 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17722 }, 17723 { 17724 "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-cmdpool", 17725 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 17726 } 17727 ] 17728 }, 17729 "VkPipelineRasterizationConservativeStateCreateInfoEXT": { 17730 "(VK_EXT_conservative_rasterization)": [ 17731 { 17732 "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-extraPrimitiveOverestimationSize-01769", 17733 "text": " <code>extraPrimitiveOverestimationSize</code> <strong class=\"purple\">must</strong> be in the range of <code>0.0</code> to <code>VkPhysicalDeviceConservativeRasterizationPropertiesEXT</code>::<code>maxExtraPrimitiveOverestimationSize</code> inclusive" 17734 }, 17735 { 17736 "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-sType-sType", 17737 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT</code>" 17738 }, 17739 { 17740 "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-flags-zerobitmask", 17741 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 17742 }, 17743 { 17744 "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-conservativeRasterizationMode-parameter", 17745 "text": " <code>conservativeRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkConservativeRasterizationModeEXT\">VkConservativeRasterizationModeEXT</a> value" 17746 } 17747 ] 17748 }, 17749 "VkPipelineDiscardRectangleStateCreateInfoEXT": { 17750 "(VK_EXT_discard_rectangles)": [ 17751 { 17752 "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleCount-00582", 17753 "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>VkPhysicalDeviceDiscardRectanglePropertiesEXT</code>::<code>maxDiscardRectangles</code>, inclusive" 17754 }, 17755 { 17756 "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-sType-sType", 17757 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT</code>" 17758 }, 17759 { 17760 "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-flags-zerobitmask", 17761 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 17762 }, 17763 { 17764 "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleMode-parameter", 17765 "text": " <code>discardRectangleMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDiscardRectangleModeEXT\">VkDiscardRectangleModeEXT</a> value" 17766 } 17767 ] 17768 }, 17769 "vkCmdSetDiscardRectangleEXT": { 17770 "(VK_EXT_discard_rectangles)": [ 17771 { 17772 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-None-00583", 17773 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled" 17774 }, 17775 { 17776 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-firstDiscardRectangle-00585", 17777 "text": " The sum of <code>firstDiscardRectangle</code> and <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>::<code>maxDiscardRectangles</code>" 17778 }, 17779 { 17780 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-x-00587", 17781 "text": " The <code>x</code> and <code>y</code> member of <code>offset</code> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>" 17782 }, 17783 { 17784 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00588", 17785 "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> + <code>extent.width</code>)</span> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow" 17786 }, 17787 { 17788 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00589", 17789 "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> + <code>extent.height</code>)</span> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow" 17790 }, 17791 { 17792 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter", 17793 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 17794 }, 17795 { 17796 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-pDiscardRectangles-parameter", 17797 "text": " <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>discardRectangleCount</code> <code>VkRect2D</code> structures" 17798 }, 17799 { 17800 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-recording", 17801 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17802 }, 17803 { 17804 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-cmdpool", 17805 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 17806 }, 17807 { 17808 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-discardRectangleCount-arraylength", 17809 "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 17810 } 17811 ] 17812 }, 17813 "vkCmdSetScissor": { 17814 "core": [ 17815 { 17816 "vuid": "VUID-vkCmdSetScissor-None-00590", 17817 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled" 17818 }, 17819 { 17820 "vuid": "VUID-vkCmdSetScissor-firstScissor-00591", 17821 "text": " <code>firstScissor</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>" 17822 }, 17823 { 17824 "vuid": "VUID-vkCmdSetScissor-firstScissor-00592", 17825 "text": " The sum of <code>firstScissor</code> and <code>scissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive" 17826 }, 17827 { 17828 "vuid": "VUID-vkCmdSetScissor-firstScissor-00593", 17829 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstScissor</code> <strong class=\"purple\">must</strong> be <code>0</code>" 17830 }, 17831 { 17832 "vuid": "VUID-vkCmdSetScissor-scissorCount-00594", 17833 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 17834 }, 17835 { 17836 "vuid": "VUID-vkCmdSetScissor-x-00595", 17837 "text": " The <code>x</code> and <code>y</code> members of <code>offset</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>" 17838 }, 17839 { 17840 "vuid": "VUID-vkCmdSetScissor-offset-00596", 17841 "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> + <code>extent.width</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow" 17842 }, 17843 { 17844 "vuid": "VUID-vkCmdSetScissor-offset-00597", 17845 "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> + <code>extent.height</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow" 17846 }, 17847 { 17848 "vuid": "VUID-vkCmdSetScissor-commandBuffer-parameter", 17849 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 17850 }, 17851 { 17852 "vuid": "VUID-vkCmdSetScissor-pScissors-parameter", 17853 "text": " <code>pScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>scissorCount</code> <code>VkRect2D</code> structures" 17854 }, 17855 { 17856 "vuid": "VUID-vkCmdSetScissor-commandBuffer-recording", 17857 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17858 }, 17859 { 17860 "vuid": "VUID-vkCmdSetScissor-commandBuffer-cmdpool", 17861 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 17862 }, 17863 { 17864 "vuid": "VUID-vkCmdSetScissor-scissorCount-arraylength", 17865 "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 17866 } 17867 ] 17868 }, 17869 "VkPipelineViewportExclusiveScissorStateCreateInfoNV": { 17870 "(VK_NV_scissor_exclusive)": [ 17871 { 17872 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027", 17873 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>" 17874 }, 17875 { 17876 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028", 17877 "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>" 17878 }, 17879 { 17880 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02029", 17881 "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or identical to the <code>viewportCount</code> member of <code>VkPipelineViewportStateCreateInfo</code>" 17882 }, 17883 { 17884 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-pDynamicStates-02030", 17885 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> and <code>exclusiveScissorCount</code> is not <code>0</code>, <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <code>VkRect2D</code> structures" 17886 }, 17887 { 17888 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType", 17889 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV</code>" 17890 }, 17891 { 17892 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-pExclusiveScissors-parameter", 17893 "text": " If <code>exclusiveScissorCount</code> is not <code>0</code>, and <code>pExclusiveScissors</code> is not <code>NULL</code>, <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <code>VkRect2D</code> structures" 17894 } 17895 ] 17896 }, 17897 "vkCmdSetExclusiveScissorNV": { 17898 "(VK_NV_scissor_exclusive)": [ 17899 { 17900 "vuid": "VUID-vkCmdSetExclusiveScissorNV-None-02031", 17901 "text": " The <a href=\"#features-exclusiveScissor\">exclusive scissor</a> feature <strong class=\"purple\">must</strong> be enabled." 17902 }, 17903 { 17904 "vuid": "VUID-vkCmdSetExclusiveScissorNV-None-02032", 17905 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled" 17906 }, 17907 { 17908 "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02033", 17909 "text": " <code>firstExclusiveScissor</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>" 17910 }, 17911 { 17912 "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02034", 17913 "text": " The sum of <code>firstExclusiveScissor</code> and <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive" 17914 }, 17915 { 17916 "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02035", 17917 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstExclusiveScissor</code> <strong class=\"purple\">must</strong> be <code>0</code>" 17918 }, 17919 { 17920 "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-02036", 17921 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 17922 }, 17923 { 17924 "vuid": "VUID-vkCmdSetExclusiveScissorNV-x-02037", 17925 "text": " The <code>x</code> and <code>y</code> members of <code>offset</code> in each member of <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>" 17926 }, 17927 { 17928 "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02038", 17929 "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> + <code>extent.width</code>)</span> for each member of <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow" 17930 }, 17931 { 17932 "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02039", 17933 "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> + <code>extent.height</code>)</span> for each member of <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow" 17934 }, 17935 { 17936 "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter", 17937 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 17938 }, 17939 { 17940 "vuid": "VUID-vkCmdSetExclusiveScissorNV-pExclusiveScissors-parameter", 17941 "text": " <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <code>VkRect2D</code> structures" 17942 }, 17943 { 17944 "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-recording", 17945 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17946 }, 17947 { 17948 "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-cmdpool", 17949 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 17950 }, 17951 { 17952 "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-arraylength", 17953 "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 17954 } 17955 ] 17956 }, 17957 "VkPipelineDepthStencilStateCreateInfo": { 17958 "core": [ 17959 { 17960 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598", 17961 "text": " If the <a href=\"#features-depthBounds\">depth bounds testing</a> feature is not enabled, <code>depthBoundsTestEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 17962 }, 17963 { 17964 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType", 17965 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO</code>" 17966 }, 17967 { 17968 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext", 17969 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 17970 }, 17971 { 17972 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-flags-zerobitmask", 17973 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 17974 }, 17975 { 17976 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthCompareOp-parameter", 17977 "text": " <code>depthCompareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value" 17978 }, 17979 { 17980 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-front-parameter", 17981 "text": " <code>front</code> <strong class=\"purple\">must</strong> be a valid <code>VkStencilOpState</code> structure" 17982 }, 17983 { 17984 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-back-parameter", 17985 "text": " <code>back</code> <strong class=\"purple\">must</strong> be a valid <code>VkStencilOpState</code> structure" 17986 } 17987 ] 17988 }, 17989 "vkCmdSetDepthBounds": { 17990 "core": [ 17991 { 17992 "vuid": "VUID-vkCmdSetDepthBounds-None-00599", 17993 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled" 17994 }, 17995 { 17996 "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-parameter", 17997 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 17998 }, 17999 { 18000 "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-recording", 18001 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 18002 }, 18003 { 18004 "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-cmdpool", 18005 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 18006 } 18007 ], 18008 "(VK_EXT_depth_range_unrestricted)": [ 18009 { 18010 "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-00600", 18011 "text": " Unless the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>minDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 18012 }, 18013 { 18014 "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-00601", 18015 "text": " Unless the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>maxDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 18016 } 18017 ], 18018 "!(VK_EXT_depth_range_unrestricted)": [ 18019 { 18020 "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-02508", 18021 "text": " <code>minDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 18022 }, 18023 { 18024 "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-02509", 18025 "text": " <code>maxDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 18026 } 18027 ] 18028 }, 18029 "VkStencilOpState": { 18030 "core": [ 18031 { 18032 "vuid": "VUID-VkStencilOpState-failOp-parameter", 18033 "text": " <code>failOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value" 18034 }, 18035 { 18036 "vuid": "VUID-VkStencilOpState-passOp-parameter", 18037 "text": " <code>passOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value" 18038 }, 18039 { 18040 "vuid": "VUID-VkStencilOpState-depthFailOp-parameter", 18041 "text": " <code>depthFailOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value" 18042 }, 18043 { 18044 "vuid": "VUID-VkStencilOpState-compareOp-parameter", 18045 "text": " <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value" 18046 } 18047 ] 18048 }, 18049 "vkCmdSetStencilCompareMask": { 18050 "core": [ 18051 { 18052 "vuid": "VUID-vkCmdSetStencilCompareMask-None-00602", 18053 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled" 18054 }, 18055 { 18056 "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter", 18057 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 18058 }, 18059 { 18060 "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-parameter", 18061 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values" 18062 }, 18063 { 18064 "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask", 18065 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 18066 }, 18067 { 18068 "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-recording", 18069 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 18070 }, 18071 { 18072 "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-cmdpool", 18073 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 18074 } 18075 ] 18076 }, 18077 "vkCmdSetStencilWriteMask": { 18078 "core": [ 18079 { 18080 "vuid": "VUID-vkCmdSetStencilWriteMask-None-00603", 18081 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled" 18082 }, 18083 { 18084 "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter", 18085 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 18086 }, 18087 { 18088 "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-parameter", 18089 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values" 18090 }, 18091 { 18092 "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask", 18093 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 18094 }, 18095 { 18096 "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-recording", 18097 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 18098 }, 18099 { 18100 "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-cmdpool", 18101 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 18102 } 18103 ] 18104 }, 18105 "vkCmdSetStencilReference": { 18106 "core": [ 18107 { 18108 "vuid": "VUID-vkCmdSetStencilReference-None-00604", 18109 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled" 18110 }, 18111 { 18112 "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-parameter", 18113 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 18114 }, 18115 { 18116 "vuid": "VUID-vkCmdSetStencilReference-faceMask-parameter", 18117 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values" 18118 }, 18119 { 18120 "vuid": "VUID-vkCmdSetStencilReference-faceMask-requiredbitmask", 18121 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 18122 }, 18123 { 18124 "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-recording", 18125 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 18126 }, 18127 { 18128 "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-cmdpool", 18129 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 18130 } 18131 ] 18132 }, 18133 "VkPipelineRepresentativeFragmentTestStateCreateInfoNV": { 18134 "(VK_NV_representative_fragment_test)": [ 18135 { 18136 "vuid": "VUID-VkPipelineRepresentativeFragmentTestStateCreateInfoNV-sType-sType", 18137 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV</code>" 18138 } 18139 ] 18140 }, 18141 "VkPipelineCoverageToColorStateCreateInfoNV": { 18142 "(VK_NV_fragment_coverage_to_color)": [ 18143 { 18144 "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-coverageToColorEnable-01404", 18145 "text": " If <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then the render pass subpass indicated by <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> and <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>subpass</code> <strong class=\"purple\">must</strong> have a color attachment at the location selected by <code>coverageToColorLocation</code>, with a <a href=\"#VkFormat\">VkFormat</a> of <code>VK_FORMAT_R8_UINT</code>, <code>VK_FORMAT_R8_SINT</code>, <code>VK_FORMAT_R16_UINT</code>, <code>VK_FORMAT_R16_SINT</code>, <code>VK_FORMAT_R32_UINT</code>, or <code>VK_FORMAT_R32_SINT</code>" 18146 }, 18147 { 18148 "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-sType-sType", 18149 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV</code>" 18150 }, 18151 { 18152 "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-flags-zerobitmask", 18153 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 18154 } 18155 ] 18156 }, 18157 "VkPipelineCoverageModulationStateCreateInfoNV": { 18158 "(VK_NV_framebuffer_mixed_samples)": [ 18159 { 18160 "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationTableEnable-01405", 18161 "text": " If <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, <code>coverageModulationTableCount</code> <strong class=\"purple\">must</strong> be equal to the number of rasterization samples divided by the number of color samples in the subpass." 18162 }, 18163 { 18164 "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-sType-sType", 18165 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV</code>" 18166 }, 18167 { 18168 "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-flags-zerobitmask", 18169 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 18170 }, 18171 { 18172 "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationMode-parameter", 18173 "text": " <code>coverageModulationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageModulationModeNV\">VkCoverageModulationModeNV</a> value" 18174 } 18175 ] 18176 }, 18177 "VkPipelineColorBlendStateCreateInfo": { 18178 "core": [ 18179 { 18180 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605", 18181 "text": " If the <a href=\"#features-independentBlend\">independent blending</a> feature is not enabled, all elements of <code>pAttachments</code> <strong class=\"purple\">must</strong> be identical" 18182 }, 18183 { 18184 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606", 18185 "text": " If the <a href=\"#features-logicOp\">logic operations</a> feature is not enabled, <code>logicOpEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 18186 }, 18187 { 18188 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00607", 18189 "text": " If <code>logicOpEnable</code> is <code>VK_TRUE</code>, <code>logicOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkLogicOp\">VkLogicOp</a> value" 18190 }, 18191 { 18192 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-sType-sType", 18193 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO</code>" 18194 }, 18195 { 18196 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext", 18197 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineColorBlendAdvancedStateCreateInfoEXT\">VkPipelineColorBlendAdvancedStateCreateInfoEXT</a>" 18198 }, 18199 { 18200 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-flags-zerobitmask", 18201 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 18202 }, 18203 { 18204 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter", 18205 "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkPipelineColorBlendAttachmentState</code> structures" 18206 } 18207 ] 18208 }, 18209 "VkPipelineColorBlendAttachmentState": { 18210 "core": [ 18211 { 18212 "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608", 18213 "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>" 18214 }, 18215 { 18216 "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609", 18217 "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>" 18218 }, 18219 { 18220 "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610", 18221 "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>srcAlphaBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>" 18222 }, 18223 { 18224 "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611", 18225 "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>dstAlphaBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>" 18226 }, 18227 { 18228 "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter", 18229 "text": " <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value" 18230 }, 18231 { 18232 "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter", 18233 "text": " <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value" 18234 }, 18235 { 18236 "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter", 18237 "text": " <code>colorBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value" 18238 }, 18239 { 18240 "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter", 18241 "text": " <code>srcAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value" 18242 }, 18243 { 18244 "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter", 18245 "text": " <code>dstAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value" 18246 }, 18247 { 18248 "vuid": "VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter", 18249 "text": " <code>alphaBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value" 18250 }, 18251 { 18252 "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter", 18253 "text": " <code>colorWriteMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkColorComponentFlagBits\">VkColorComponentFlagBits</a> values" 18254 } 18255 ], 18256 "(VK_EXT_blend_operation_advanced)": [ 18257 { 18258 "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406", 18259 "text": " If either of <code>colorBlendOp</code> or <code>alphaBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <code>colorBlendOp</code> <strong class=\"purple\">must</strong> equal <code>alphaBlendOp</code>" 18260 }, 18261 { 18262 "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407", 18263 "text": " If <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendIndependentBlend</code> is <code>VK_FALSE</code> and <code>colorBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <code>colorBlendOp</code> <strong class=\"purple\">must</strong> be the same for all attachments." 18264 }, 18265 { 18266 "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01408", 18267 "text": " If <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendIndependentBlend</code> is <code>VK_FALSE</code> and <code>alphaBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <code>alphaBlendOp</code> <strong class=\"purple\">must</strong> be the same for all attachments." 18268 }, 18269 { 18270 "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409", 18271 "text": " If <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendAllOperations</code> is <code>VK_FALSE</code>, then <code>colorBlendOp</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_OP_ZERO_EXT</code>, <code>VK_BLEND_OP_SRC_EXT</code>, <code>VK_BLEND_OP_DST_EXT</code>, <code>VK_BLEND_OP_SRC_OVER_EXT</code>, <code>VK_BLEND_OP_DST_OVER_EXT</code>, <code>VK_BLEND_OP_SRC_IN_EXT</code>, <code>VK_BLEND_OP_DST_IN_EXT</code>, <code>VK_BLEND_OP_SRC_OUT_EXT</code>, <code>VK_BLEND_OP_DST_OUT_EXT</code>, <code>VK_BLEND_OP_SRC_ATOP_EXT</code>, <code>VK_BLEND_OP_DST_ATOP_EXT</code>, <code>VK_BLEND_OP_XOR_EXT</code>, <code>VK_BLEND_OP_INVERT_EXT</code>, <code>VK_BLEND_OP_INVERT_RGB_EXT</code>, <code>VK_BLEND_OP_LINEARDODGE_EXT</code>, <code>VK_BLEND_OP_LINEARBURN_EXT</code>, <code>VK_BLEND_OP_VIVIDLIGHT_EXT</code>, <code>VK_BLEND_OP_LINEARLIGHT_EXT</code>, <code>VK_BLEND_OP_PINLIGHT_EXT</code>, <code>VK_BLEND_OP_HARDMIX_EXT</code>, <code>VK_BLEND_OP_PLUS_EXT</code>, <code>VK_BLEND_OP_PLUS_CLAMPED_EXT</code>, <code>VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT</code>, <code>VK_BLEND_OP_PLUS_DARKER_EXT</code>, <code>VK_BLEND_OP_MINUS_EXT</code>, <code>VK_BLEND_OP_MINUS_CLAMPED_EXT</code>, <code>VK_BLEND_OP_CONTRAST_EXT</code>, <code>VK_BLEND_OP_INVERT_OVG_EXT</code>, <code>VK_BLEND_OP_RED_EXT</code>, <code>VK_BLEND_OP_GREEN_EXT</code>, or <code>VK_BLEND_OP_BLUE_EXT</code>" 18272 }, 18273 { 18274 "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410", 18275 "text": " If <code>colorBlendOp</code> or <code>alphaBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <a href=\"#VkSubpassDescription\">VkSubpassDescription</a>::<code>colorAttachmentCount</code> of the subpass this pipeline is compiled against <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::advancedBlendMaxColorAttachments" 18276 } 18277 ] 18278 }, 18279 "vkCmdSetBlendConstants": { 18280 "core": [ 18281 { 18282 "vuid": "VUID-vkCmdSetBlendConstants-None-00612", 18283 "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled" 18284 }, 18285 { 18286 "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-parameter", 18287 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 18288 }, 18289 { 18290 "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-recording", 18291 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 18292 }, 18293 { 18294 "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-cmdpool", 18295 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 18296 } 18297 ] 18298 }, 18299 "VkPipelineColorBlendAdvancedStateCreateInfoEXT": { 18300 "(VK_EXT_blend_operation_advanced)": [ 18301 { 18302 "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424", 18303 "text": " If the <a href=\"#limits-advancedBlendNonPremultipliedSrcColor\">non-premultiplied source color</a> property is not supported, <code>srcPremultiplied</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>" 18304 }, 18305 { 18306 "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425", 18307 "text": " If the <a href=\"#limits-advancedBlendNonPremultipliedDstColor\">non-premultiplied destination color</a> property is not supported, <code>dstPremultiplied</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>" 18308 }, 18309 { 18310 "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426", 18311 "text": " If the <a href=\"#limits-advancedBlendCorrelatedOverlap\">correlated overlap</a> property is not supported, <code>blendOverlap</code> <strong class=\"purple\">must</strong> be <code>VK_BLEND_OVERLAP_UNCORRELATED_EXT</code>" 18312 }, 18313 { 18314 "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-sType-sType", 18315 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT</code>" 18316 }, 18317 { 18318 "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-parameter", 18319 "text": " <code>blendOverlap</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOverlapEXT\">VkBlendOverlapEXT</a> value" 18320 } 18321 ] 18322 }, 18323 "vkCmdDispatch": { 18324 "core": [ 18325 { 18326 "vuid": "VUID-vkCmdDispatch-groupCountX-00386", 18327 "text": " <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]" 18328 }, 18329 { 18330 "vuid": "VUID-vkCmdDispatch-groupCountY-00387", 18331 "text": " <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]" 18332 }, 18333 { 18334 "vuid": "VUID-vkCmdDispatch-groupCountZ-00388", 18335 "text": " <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]" 18336 }, 18337 { 18338 "vuid": "VUID-vkCmdDispatch-None-00389", 18339 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 18340 }, 18341 { 18342 "vuid": "VUID-vkCmdDispatch-None-00390", 18343 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>" 18344 }, 18345 { 18346 "vuid": "VUID-vkCmdDispatch-None-00391", 18347 "text": " A valid compute pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>" 18348 }, 18349 { 18350 "vuid": "VUID-vkCmdDispatch-None-00392", 18351 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants with the one used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 18352 }, 18353 { 18354 "vuid": "VUID-vkCmdDispatch-None-00393", 18355 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 18356 }, 18357 { 18358 "vuid": "VUID-vkCmdDispatch-None-00394", 18359 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 18360 }, 18361 { 18362 "vuid": "VUID-vkCmdDispatch-None-00395", 18363 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 18364 }, 18365 { 18366 "vuid": "VUID-vkCmdDispatch-None-00396", 18367 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 18368 }, 18369 { 18370 "vuid": "VUID-vkCmdDispatch-None-00397", 18371 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 18372 }, 18373 { 18374 "vuid": "VUID-vkCmdDispatch-None-02005", 18375 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>." 18376 }, 18377 { 18378 "vuid": "VUID-vkCmdDispatch-commandBuffer-parameter", 18379 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 18380 }, 18381 { 18382 "vuid": "VUID-vkCmdDispatch-commandBuffer-recording", 18383 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 18384 }, 18385 { 18386 "vuid": "VUID-vkCmdDispatch-commandBuffer-cmdpool", 18387 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 18388 }, 18389 { 18390 "vuid": "VUID-vkCmdDispatch-renderpass", 18391 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 18392 } 18393 ], 18394 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 18395 { 18396 "vuid": "VUID-vkCmdDispatch-None-02006", 18397 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>." 18398 } 18399 ], 18400 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 18401 { 18402 "vuid": "VUID-vkCmdDispatch-None-00400", 18403 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 18404 } 18405 ], 18406 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 18407 { 18408 "vuid": "VUID-vkCmdDispatch-filterCubic-02609", 18409 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 18410 }, 18411 { 18412 "vuid": "VUID-vkCmdDispatch-filterCubicMinmax-02610", 18413 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 18414 } 18415 ], 18416 "(VK_VERSION_1_1)": [ 18417 { 18418 "vuid": "VUID-vkCmdDispatch-commandBuffer-01844", 18419 "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 18420 }, 18421 { 18422 "vuid": "VUID-vkCmdDispatch-commandBuffer-01845", 18423 "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer." 18424 }, 18425 { 18426 "vuid": "VUID-vkCmdDispatch-commandBuffer-01846", 18427 "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the compute pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> reads from any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 18428 } 18429 ], 18430 "(VK_NV_corner_sampled_image)": [ 18431 { 18432 "vuid": "VUID-vkCmdDispatch-flags-02040", 18433 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>." 18434 } 18435 ] 18436 }, 18437 "vkCmdDispatchIndirect": { 18438 "core": [ 18439 { 18440 "vuid": "VUID-vkCmdDispatchIndirect-buffer-00401", 18441 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 18442 }, 18443 { 18444 "vuid": "VUID-vkCmdDispatchIndirect-None-00402", 18445 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 18446 }, 18447 { 18448 "vuid": "VUID-vkCmdDispatchIndirect-None-00403", 18449 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>" 18450 }, 18451 { 18452 "vuid": "VUID-vkCmdDispatchIndirect-None-00404", 18453 "text": " A valid compute pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>" 18454 }, 18455 { 18456 "vuid": "VUID-vkCmdDispatchIndirect-buffer-00405", 18457 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 18458 }, 18459 { 18460 "vuid": "VUID-vkCmdDispatchIndirect-offset-00406", 18461 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 18462 }, 18463 { 18464 "vuid": "VUID-vkCmdDispatchIndirect-offset-00407", 18465 "text": " The sum of <code>offset</code> and the size of <code>VkDispatchIndirectCommand</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 18466 }, 18467 { 18468 "vuid": "VUID-vkCmdDispatchIndirect-None-00408", 18469 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants with the one used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 18470 }, 18471 { 18472 "vuid": "VUID-vkCmdDispatchIndirect-None-00409", 18473 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 18474 }, 18475 { 18476 "vuid": "VUID-vkCmdDispatchIndirect-None-00410", 18477 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 18478 }, 18479 { 18480 "vuid": "VUID-vkCmdDispatchIndirect-None-00411", 18481 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 18482 }, 18483 { 18484 "vuid": "VUID-vkCmdDispatchIndirect-None-00412", 18485 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 18486 }, 18487 { 18488 "vuid": "VUID-vkCmdDispatchIndirect-None-00413", 18489 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 18490 }, 18491 { 18492 "vuid": "VUID-vkCmdDispatchIndirect-None-02007", 18493 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>." 18494 }, 18495 { 18496 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-parameter", 18497 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 18498 }, 18499 { 18500 "vuid": "VUID-vkCmdDispatchIndirect-buffer-parameter", 18501 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 18502 }, 18503 { 18504 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-recording", 18505 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 18506 }, 18507 { 18508 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-cmdpool", 18509 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 18510 }, 18511 { 18512 "vuid": "VUID-vkCmdDispatchIndirect-renderpass", 18513 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 18514 }, 18515 { 18516 "vuid": "VUID-vkCmdDispatchIndirect-commonparent", 18517 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 18518 } 18519 ], 18520 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 18521 { 18522 "vuid": "VUID-vkCmdDispatchIndirect-None-02008", 18523 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>." 18524 } 18525 ], 18526 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 18527 { 18528 "vuid": "VUID-vkCmdDispatchIndirect-None-00416", 18529 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 18530 } 18531 ], 18532 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 18533 { 18534 "vuid": "VUID-vkCmdDispatchIndirect-filterCubic-02611", 18535 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 18536 }, 18537 { 18538 "vuid": "VUID-vkCmdDispatchIndirect-filterCubicMinmax-02612", 18539 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 18540 } 18541 ], 18542 "(VK_VERSION_1_1)": [ 18543 { 18544 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02639", 18545 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 18546 }, 18547 { 18548 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-01847", 18549 "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer." 18550 } 18551 ], 18552 "(VK_NV_corner_sampled_image)": [ 18553 { 18554 "vuid": "VUID-vkCmdDispatchIndirect-flags-02041", 18555 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>." 18556 } 18557 ] 18558 }, 18559 "VkDispatchIndirectCommand": { 18560 "core": [ 18561 { 18562 "vuid": "VUID-VkDispatchIndirectCommand-x-00417", 18563 "text": " <code>x</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]" 18564 }, 18565 { 18566 "vuid": "VUID-VkDispatchIndirectCommand-y-00418", 18567 "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]" 18568 }, 18569 { 18570 "vuid": "VUID-VkDispatchIndirectCommand-z-00419", 18571 "text": " <code>z</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]" 18572 } 18573 ] 18574 }, 18575 "vkCmdDispatchBase": { 18576 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 18577 { 18578 "vuid": "VUID-vkCmdDispatchBase-None-00420", 18579 "text": " All valid usage rules from <a href=\"#vkCmdDispatch\">vkCmdDispatch</a> apply" 18580 }, 18581 { 18582 "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00421", 18583 "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]" 18584 }, 18585 { 18586 "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00422", 18587 "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]" 18588 }, 18589 { 18590 "vuid": "VUID-vkCmdDispatchBase-baseGroupZ-00423", 18591 "text": " <code>baseGroupZ</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]" 18592 }, 18593 { 18594 "vuid": "VUID-vkCmdDispatchBase-groupCountX-00424", 18595 "text": " <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0] minus <code>baseGroupX</code>" 18596 }, 18597 { 18598 "vuid": "VUID-vkCmdDispatchBase-groupCountY-00425", 18599 "text": " <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1] minus <code>baseGroupY</code>" 18600 }, 18601 { 18602 "vuid": "VUID-vkCmdDispatchBase-groupCountZ-00426", 18603 "text": " <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2] minus <code>baseGroupZ</code>" 18604 }, 18605 { 18606 "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00427", 18607 "text": " If any of <code>baseGroupX</code>, <code>baseGroupY</code>, or <code>baseGroupZ</code> are not zero, then the bound compute pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag." 18608 }, 18609 { 18610 "vuid": "VUID-vkCmdDispatchBase-commandBuffer-parameter", 18611 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 18612 }, 18613 { 18614 "vuid": "VUID-vkCmdDispatchBase-commandBuffer-recording", 18615 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 18616 }, 18617 { 18618 "vuid": "VUID-vkCmdDispatchBase-commandBuffer-cmdpool", 18619 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 18620 }, 18621 { 18622 "vuid": "VUID-vkCmdDispatchBase-renderpass", 18623 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 18624 } 18625 ] 18626 }, 18627 "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX": { 18628 "(VK_NVX_device_generated_commands)": [ 18629 { 18630 "vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-physicalDevice-parameter", 18631 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 18632 }, 18633 { 18634 "vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-pFeatures-parameter", 18635 "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceGeneratedCommandsFeaturesNVX</code> structure" 18636 }, 18637 { 18638 "vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-pLimits-parameter", 18639 "text": " <code>pLimits</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceGeneratedCommandsLimitsNVX</code> structure" 18640 } 18641 ] 18642 }, 18643 "VkDeviceGeneratedCommandsFeaturesNVX": { 18644 "(VK_NVX_device_generated_commands)": [ 18645 { 18646 "vuid": "VUID-VkDeviceGeneratedCommandsFeaturesNVX-sType-sType", 18647 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX</code>" 18648 }, 18649 { 18650 "vuid": "VUID-VkDeviceGeneratedCommandsFeaturesNVX-pNext-pNext", 18651 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 18652 } 18653 ] 18654 }, 18655 "VkDeviceGeneratedCommandsLimitsNVX": { 18656 "(VK_NVX_device_generated_commands)": [ 18657 { 18658 "vuid": "VUID-VkDeviceGeneratedCommandsLimitsNVX-sType-sType", 18659 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX</code>" 18660 }, 18661 { 18662 "vuid": "VUID-VkDeviceGeneratedCommandsLimitsNVX-pNext-pNext", 18663 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 18664 } 18665 ] 18666 }, 18667 "vkCreateObjectTableNVX": { 18668 "(VK_NVX_device_generated_commands)": [ 18669 { 18670 "vuid": "VUID-vkCreateObjectTableNVX-device-parameter", 18671 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 18672 }, 18673 { 18674 "vuid": "VUID-vkCreateObjectTableNVX-pCreateInfo-parameter", 18675 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkObjectTableCreateInfoNVX</code> structure" 18676 }, 18677 { 18678 "vuid": "VUID-vkCreateObjectTableNVX-pAllocator-parameter", 18679 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 18680 }, 18681 { 18682 "vuid": "VUID-vkCreateObjectTableNVX-pObjectTable-parameter", 18683 "text": " <code>pObjectTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkObjectTableNVX</code> handle" 18684 } 18685 ] 18686 }, 18687 "VkObjectTableCreateInfoNVX": { 18688 "(VK_NVX_device_generated_commands)": [ 18689 { 18690 "vuid": "VUID-VkObjectTableCreateInfoNVX-computeBindingPointSupport-01355", 18691 "text": " If the <code>VkDeviceGeneratedCommandsFeaturesNVX</code>::<code>computeBindingPointSupport</code> feature is not enabled, <code>pObjectEntryUsageFlags</code> <strong class=\"purple\">must</strong> not contain <code>VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX</code>" 18692 }, 18693 { 18694 "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryCounts-01356", 18695 "text": " Any value within <code>pObjectEntryCounts</code> <strong class=\"purple\">must</strong> not exceed <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>maxObjectEntryCounts</code>" 18696 }, 18697 { 18698 "vuid": "VUID-VkObjectTableCreateInfoNVX-maxUniformBuffersPerDescriptor-01357", 18699 "text": " <code>maxUniformBuffersPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device." 18700 }, 18701 { 18702 "vuid": "VUID-VkObjectTableCreateInfoNVX-maxStorageBuffersPerDescriptor-01358", 18703 "text": " <code>maxStorageBuffersPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device." 18704 }, 18705 { 18706 "vuid": "VUID-VkObjectTableCreateInfoNVX-maxStorageImagesPerDescriptor-01359", 18707 "text": " <code>maxStorageImagesPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device." 18708 }, 18709 { 18710 "vuid": "VUID-VkObjectTableCreateInfoNVX-maxSampledImagesPerDescriptor-01360", 18711 "text": " <code>maxSampledImagesPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device." 18712 }, 18713 { 18714 "vuid": "VUID-VkObjectTableCreateInfoNVX-sType-sType", 18715 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX</code>" 18716 }, 18717 { 18718 "vuid": "VUID-VkObjectTableCreateInfoNVX-pNext-pNext", 18719 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 18720 }, 18721 { 18722 "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryTypes-parameter", 18723 "text": " <code>pObjectEntryTypes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> values" 18724 }, 18725 { 18726 "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryCounts-parameter", 18727 "text": " <code>pObjectEntryCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> <code>uint32_t</code> values" 18728 }, 18729 { 18730 "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryUsageFlags-parameter", 18731 "text": " <code>pObjectEntryUsageFlags</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid combinations of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values" 18732 }, 18733 { 18734 "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryUsageFlags-requiredbitmask", 18735 "text": " Each element of <code>pObjectEntryUsageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 18736 }, 18737 { 18738 "vuid": "VUID-VkObjectTableCreateInfoNVX-objectCount-arraylength", 18739 "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 18740 } 18741 ] 18742 }, 18743 "vkDestroyObjectTableNVX": { 18744 "(VK_NVX_device_generated_commands)": [ 18745 { 18746 "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01361", 18747 "text": " All submitted commands that refer to <code>objectTable</code> <strong class=\"purple\">must</strong> have completed execution." 18748 }, 18749 { 18750 "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01362", 18751 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here." 18752 }, 18753 { 18754 "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01363", 18755 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>." 18756 }, 18757 { 18758 "vuid": "VUID-vkDestroyObjectTableNVX-device-parameter", 18759 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 18760 }, 18761 { 18762 "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-parameter", 18763 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle" 18764 }, 18765 { 18766 "vuid": "VUID-vkDestroyObjectTableNVX-pAllocator-parameter", 18767 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 18768 }, 18769 { 18770 "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-parent", 18771 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 18772 } 18773 ] 18774 }, 18775 "vkRegisterObjectsNVX": { 18776 "(VK_NVX_device_generated_commands)": [ 18777 { 18778 "vuid": "VUID-vkRegisterObjectsNVX-pObjectTableEntry-01364", 18779 "text": " The contents of <code>pObjectTableEntry</code> <strong class=\"purple\">must</strong> yield plausible bindings supported by the device." 18780 }, 18781 { 18782 "vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-01365", 18783 "text": " At any <code>pObjectIndices</code> there <strong class=\"purple\">must</strong> not be a registered resource already." 18784 }, 18785 { 18786 "vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-01366", 18787 "text": " Any value inside <code>pObjectIndices</code> <strong class=\"purple\">must</strong> be below the appropriate <code>VkObjectTableCreateInfoNVX</code>::<code>pObjectEntryCounts</code> limits provided at <code>objectTable</code> creation time." 18788 }, 18789 { 18790 "vuid": "VUID-vkRegisterObjectsNVX-device-parameter", 18791 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 18792 }, 18793 { 18794 "vuid": "VUID-vkRegisterObjectsNVX-objectTable-parameter", 18795 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle" 18796 }, 18797 { 18798 "vuid": "VUID-vkRegisterObjectsNVX-ppObjectTableEntries-parameter", 18799 "text": " <code>ppObjectTableEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <code>VkObjectTableEntryNVX</code> structures" 18800 }, 18801 { 18802 "vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-parameter", 18803 "text": " <code>pObjectIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> <code>uint32_t</code> values" 18804 }, 18805 { 18806 "vuid": "VUID-vkRegisterObjectsNVX-objectCount-arraylength", 18807 "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 18808 }, 18809 { 18810 "vuid": "VUID-vkRegisterObjectsNVX-objectTable-parent", 18811 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 18812 } 18813 ] 18814 }, 18815 "VkObjectTableEntryNVX": { 18816 "(VK_NVX_device_generated_commands)": [ 18817 { 18818 "vuid": "VUID-VkObjectTableEntryNVX-computeBindingPointSupport-01367", 18819 "text": " If the <code>VkDeviceGeneratedCommandsFeaturesNVX</code>::<code>computeBindingPointSupport</code> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX</code>" 18820 }, 18821 { 18822 "vuid": "VUID-VkObjectTableEntryNVX-type-parameter", 18823 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value" 18824 }, 18825 { 18826 "vuid": "VUID-VkObjectTableEntryNVX-flags-parameter", 18827 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values" 18828 }, 18829 { 18830 "vuid": "VUID-VkObjectTableEntryNVX-flags-requiredbitmask", 18831 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 18832 } 18833 ] 18834 }, 18835 "VkObjectTablePipelineEntryNVX": { 18836 "(VK_NVX_device_generated_commands)": [ 18837 { 18838 "vuid": "VUID-VkObjectTablePipelineEntryNVX-type-01368", 18839 "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX</code>" 18840 }, 18841 { 18842 "vuid": "VUID-VkObjectTablePipelineEntryNVX-type-parameter", 18843 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value" 18844 }, 18845 { 18846 "vuid": "VUID-VkObjectTablePipelineEntryNVX-flags-parameter", 18847 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values" 18848 }, 18849 { 18850 "vuid": "VUID-VkObjectTablePipelineEntryNVX-flags-requiredbitmask", 18851 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 18852 }, 18853 { 18854 "vuid": "VUID-VkObjectTablePipelineEntryNVX-pipeline-parameter", 18855 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle" 18856 } 18857 ] 18858 }, 18859 "VkObjectTableDescriptorSetEntryNVX": { 18860 "(VK_NVX_device_generated_commands)": [ 18861 { 18862 "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-type-01369", 18863 "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX</code>" 18864 }, 18865 { 18866 "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-type-parameter", 18867 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value" 18868 }, 18869 { 18870 "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-flags-parameter", 18871 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values" 18872 }, 18873 { 18874 "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-flags-requiredbitmask", 18875 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 18876 }, 18877 { 18878 "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-pipelineLayout-parameter", 18879 "text": " <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle" 18880 }, 18881 { 18882 "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-descriptorSet-parameter", 18883 "text": " <code>descriptorSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle" 18884 }, 18885 { 18886 "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-commonparent", 18887 "text": " Both of <code>descriptorSet</code>, and <code>pipelineLayout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 18888 } 18889 ] 18890 }, 18891 "VkObjectTableVertexBufferEntryNVX": { 18892 "(VK_NVX_device_generated_commands)": [ 18893 { 18894 "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-type-01370", 18895 "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX</code>" 18896 }, 18897 { 18898 "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-type-parameter", 18899 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value" 18900 }, 18901 { 18902 "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-flags-parameter", 18903 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values" 18904 }, 18905 { 18906 "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-flags-requiredbitmask", 18907 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 18908 }, 18909 { 18910 "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-buffer-parameter", 18911 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 18912 } 18913 ] 18914 }, 18915 "VkObjectTableIndexBufferEntryNVX": { 18916 "(VK_NVX_device_generated_commands)": [ 18917 { 18918 "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-type-01371", 18919 "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX</code>" 18920 }, 18921 { 18922 "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-type-parameter", 18923 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value" 18924 }, 18925 { 18926 "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-flags-parameter", 18927 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values" 18928 }, 18929 { 18930 "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-flags-requiredbitmask", 18931 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 18932 }, 18933 { 18934 "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-buffer-parameter", 18935 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 18936 }, 18937 { 18938 "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-indexType-parameter", 18939 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value" 18940 } 18941 ] 18942 }, 18943 "VkObjectTablePushConstantEntryNVX": { 18944 "(VK_NVX_device_generated_commands)": [ 18945 { 18946 "vuid": "VUID-VkObjectTablePushConstantEntryNVX-type-01372", 18947 "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX</code>" 18948 }, 18949 { 18950 "vuid": "VUID-VkObjectTablePushConstantEntryNVX-type-parameter", 18951 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value" 18952 }, 18953 { 18954 "vuid": "VUID-VkObjectTablePushConstantEntryNVX-flags-parameter", 18955 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values" 18956 }, 18957 { 18958 "vuid": "VUID-VkObjectTablePushConstantEntryNVX-flags-requiredbitmask", 18959 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 18960 }, 18961 { 18962 "vuid": "VUID-VkObjectTablePushConstantEntryNVX-pipelineLayout-parameter", 18963 "text": " <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle" 18964 }, 18965 { 18966 "vuid": "VUID-VkObjectTablePushConstantEntryNVX-stageFlags-parameter", 18967 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values" 18968 }, 18969 { 18970 "vuid": "VUID-VkObjectTablePushConstantEntryNVX-stageFlags-requiredbitmask", 18971 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 18972 } 18973 ] 18974 }, 18975 "vkUnregisterObjectsNVX": { 18976 "(VK_NVX_device_generated_commands)": [ 18977 { 18978 "vuid": "VUID-vkUnregisterObjectsNVX-pObjectIndices-01373", 18979 "text": " At any <code>pObjectIndices</code> there <strong class=\"purple\">must</strong> be a registered resource already." 18980 }, 18981 { 18982 "vuid": "VUID-vkUnregisterObjectsNVX-pObjectEntryTypes-01374", 18983 "text": " The <code>pObjectEntryTypes</code> of the resource at <code>pObjectIndices</code> <strong class=\"purple\">must</strong> match." 18984 }, 18985 { 18986 "vuid": "VUID-vkUnregisterObjectsNVX-None-01375", 18987 "text": " All operations on the device using the registered resource <strong class=\"purple\">must</strong> have been completed." 18988 }, 18989 { 18990 "vuid": "VUID-vkUnregisterObjectsNVX-device-parameter", 18991 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 18992 }, 18993 { 18994 "vuid": "VUID-vkUnregisterObjectsNVX-objectTable-parameter", 18995 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle" 18996 }, 18997 { 18998 "vuid": "VUID-vkUnregisterObjectsNVX-pObjectEntryTypes-parameter", 18999 "text": " <code>pObjectEntryTypes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> values" 19000 }, 19001 { 19002 "vuid": "VUID-vkUnregisterObjectsNVX-pObjectIndices-parameter", 19003 "text": " <code>pObjectIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> <code>uint32_t</code> values" 19004 }, 19005 { 19006 "vuid": "VUID-vkUnregisterObjectsNVX-objectCount-arraylength", 19007 "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 19008 }, 19009 { 19010 "vuid": "VUID-vkUnregisterObjectsNVX-objectTable-parent", 19011 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 19012 } 19013 ] 19014 }, 19015 "VkIndirectCommandsLayoutTokenNVX": { 19016 "(VK_NVX_device_generated_commands)": [ 19017 { 19018 "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-bindingUnit-01342", 19019 "text": " <code>bindingUnit</code> <strong class=\"purple\">must</strong> stay within device supported limits for the appropriate commands." 19020 }, 19021 { 19022 "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-dynamicCount-01343", 19023 "text": " <code>dynamicCount</code> <strong class=\"purple\">must</strong> stay within device supported limits for the appropriate commands." 19024 }, 19025 { 19026 "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-divisor-01344", 19027 "text": " <code>divisor</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and a power of two." 19028 }, 19029 { 19030 "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-tokenType-parameter", 19031 "text": " <code>tokenType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeNVX\">VkIndirectCommandsTokenTypeNVX</a> value" 19032 } 19033 ] 19034 }, 19035 "VkIndirectCommandsTokenNVX": { 19036 "(VK_NVX_device_generated_commands)": [ 19037 { 19038 "vuid": "VUID-VkIndirectCommandsTokenNVX-buffer-01345", 19039 "text": " The <code>buffer</code>’s usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set." 19040 }, 19041 { 19042 "vuid": "VUID-VkIndirectCommandsTokenNVX-offset-01346", 19043 "text": " The <code>offset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>minCommandsTokenBufferOffsetAlignment</code>." 19044 }, 19045 { 19046 "vuid": "VUID-VkIndirectCommandsTokenNVX-tokenType-parameter", 19047 "text": " <code>tokenType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeNVX\">VkIndirectCommandsTokenTypeNVX</a> value" 19048 }, 19049 { 19050 "vuid": "VUID-VkIndirectCommandsTokenNVX-buffer-parameter", 19051 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 19052 } 19053 ] 19054 }, 19055 "vkCreateIndirectCommandsLayoutNVX": { 19056 "(VK_NVX_device_generated_commands)": [ 19057 { 19058 "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-device-parameter", 19059 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 19060 }, 19061 { 19062 "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pCreateInfo-parameter", 19063 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkIndirectCommandsLayoutCreateInfoNVX</code> structure" 19064 }, 19065 { 19066 "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pAllocator-parameter", 19067 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 19068 }, 19069 { 19070 "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pIndirectCommandsLayout-parameter", 19071 "text": " <code>pIndirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkIndirectCommandsLayoutNVX</code> handle" 19072 } 19073 ] 19074 }, 19075 "VkIndirectCommandsLayoutCreateInfoNVX": { 19076 "(VK_NVX_device_generated_commands)": [ 19077 { 19078 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-tokenCount-01347", 19079 "text": " <code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and below <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>maxIndirectCommandsLayoutTokenCount</code>" 19080 }, 19081 { 19082 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-computeBindingPointSupport-01348", 19083 "text": " If the <code>VkDeviceGeneratedCommandsFeaturesNVX</code>::<code>computeBindingPointSupport</code> feature is not enabled, then <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>" 19084 }, 19085 { 19086 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01349", 19087 "text": " If <code>pTokens</code> contains an entry of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX</code> it <strong class=\"purple\">must</strong> be the first element of the array and there <strong class=\"purple\">must</strong> be only a single element of such token type." 19088 }, 19089 { 19090 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01350", 19091 "text": " All state binding tokens in <code>pTokens</code> <strong class=\"purple\">must</strong> occur prior work provoking tokens (<code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX</code>)." 19092 }, 19093 { 19094 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01351", 19095 "text": " The content of <code>pTokens</code> <strong class=\"purple\">must</strong> include one single work provoking token that is compatible with the <code>pipelineBindPoint</code>." 19096 }, 19097 { 19098 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-sType-sType", 19099 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX</code>" 19100 }, 19101 { 19102 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pNext-pNext", 19103 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19104 }, 19105 { 19106 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pipelineBindPoint-parameter", 19107 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 19108 }, 19109 { 19110 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-flags-parameter", 19111 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkIndirectCommandsLayoutUsageFlagBitsNVX\">VkIndirectCommandsLayoutUsageFlagBitsNVX</a> values" 19112 }, 19113 { 19114 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-flags-requiredbitmask", 19115 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 19116 }, 19117 { 19118 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-parameter", 19119 "text": " <code>pTokens</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tokenCount</code> valid <code>VkIndirectCommandsLayoutTokenNVX</code> structures" 19120 }, 19121 { 19122 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-tokenCount-arraylength", 19123 "text": " <code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 19124 } 19125 ] 19126 }, 19127 "vkDestroyIndirectCommandsLayoutNVX": { 19128 "(VK_NVX_device_generated_commands)": [ 19129 { 19130 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-01352", 19131 "text": " All submitted commands that refer to <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have completed execution" 19132 }, 19133 { 19134 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-objectTable-01353", 19135 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 19136 }, 19137 { 19138 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-objectTable-01354", 19139 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19140 }, 19141 { 19142 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-device-parameter", 19143 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 19144 }, 19145 { 19146 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-parameter", 19147 "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkIndirectCommandsLayoutNVX</code> handle" 19148 }, 19149 { 19150 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-pAllocator-parameter", 19151 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 19152 }, 19153 { 19154 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-parent", 19155 "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 19156 } 19157 ] 19158 }, 19159 "vkCmdReserveSpaceForCommandsNVX": { 19160 "(VK_NVX_device_generated_commands)": [ 19161 { 19162 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-01329", 19163 "text": " The provided <code>commandBuffer</code> <strong class=\"purple\">must</strong> not have had a prior space reservation since its creation or the last reset." 19164 }, 19165 { 19166 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-01330", 19167 "text": " The state of the <code>commandBuffer</code> <strong class=\"purple\">must</strong> be legal to execute all commands within the sequence provided by the <code>indirectCommandsLayout</code> member of <code>pProcessCommandsInfo</code>." 19168 }, 19169 { 19170 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-parameter", 19171 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 19172 }, 19173 { 19174 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-pReserveSpaceInfo-parameter", 19175 "text": " <code>pReserveSpaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCmdReserveSpaceForCommandsInfoNVX</code> structure" 19176 }, 19177 { 19178 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-recording", 19179 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 19180 }, 19181 { 19182 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-cmdpool", 19183 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 19184 }, 19185 { 19186 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-renderpass", 19187 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 19188 }, 19189 { 19190 "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-bufferlevel", 19191 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a secondary <code>VkCommandBuffer</code>" 19192 } 19193 ] 19194 }, 19195 "VkCmdReserveSpaceForCommandsInfoNVX": { 19196 "(VK_NVX_device_generated_commands)": [ 19197 { 19198 "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-sType-sType", 19199 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX</code>" 19200 }, 19201 { 19202 "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-pNext-pNext", 19203 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19204 }, 19205 { 19206 "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-objectTable-parameter", 19207 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle" 19208 }, 19209 { 19210 "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-indirectCommandsLayout-parameter", 19211 "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkIndirectCommandsLayoutNVX</code> handle" 19212 }, 19213 { 19214 "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-commonparent", 19215 "text": " Both of <code>indirectCommandsLayout</code>, and <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 19216 } 19217 ] 19218 }, 19219 "vkCmdProcessCommandsNVX": { 19220 "(VK_NVX_device_generated_commands)": [ 19221 { 19222 "vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-parameter", 19223 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 19224 }, 19225 { 19226 "vuid": "VUID-vkCmdProcessCommandsNVX-pProcessCommandsInfo-parameter", 19227 "text": " <code>pProcessCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCmdProcessCommandsInfoNVX</code> structure" 19228 }, 19229 { 19230 "vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-recording", 19231 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 19232 }, 19233 { 19234 "vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-cmdpool", 19235 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 19236 }, 19237 { 19238 "vuid": "VUID-vkCmdProcessCommandsNVX-renderpass", 19239 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 19240 } 19241 ] 19242 }, 19243 "VkCmdProcessCommandsInfoNVX": { 19244 "(VK_NVX_device_generated_commands)": [ 19245 { 19246 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-objectTable-01331", 19247 "text": " The provided <code>objectTable</code> <strong class=\"purple\">must</strong> include all objects referenced by the generation process" 19248 }, 19249 { 19250 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsTokenCount-01332", 19251 "text": " <code>indirectCommandsTokenCount</code> <strong class=\"purple\">must</strong> match the <code>indirectCommandsLayout</code>’s <code>tokenCount</code>" 19252 }, 19253 { 19254 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-tokenType-01333", 19255 "text": " The <code>tokenType</code> member of each entry in the <code>pIndirectCommandsTokens</code> array <strong class=\"purple\">must</strong> match the values used at creation time of <code>indirectCommandsLayout</code>" 19256 }, 19257 { 19258 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01334", 19259 "text": " If <code>targetCommandBuffer</code> is provided, it <strong class=\"purple\">must</strong> have reserved command space" 19260 }, 19261 { 19262 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01335", 19263 "text": " If <code>targetCommandBuffer</code> is provided, the <code>objectTable</code> <strong class=\"purple\">must</strong> match the reservation’s <code>objectTable</code> and <strong class=\"purple\">must</strong> have had all referenced objects registered at reservation time" 19264 }, 19265 { 19266 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01336", 19267 "text": " If <code>targetCommandBuffer</code> is provided, the <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> match the reservation’s <code>indirectCommandsLayout</code>" 19268 }, 19269 { 19270 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01337", 19271 "text": " If <code>targetCommandBuffer</code> is provided, the <code>maxSequencesCount</code> <strong class=\"purple\">must</strong> not exceed the reservation’s <code>maxSequencesCount</code>" 19272 }, 19273 { 19274 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01338", 19275 "text": " If <code>sequencesCountBuffer</code> is used, its usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 19276 }, 19277 { 19278 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01339", 19279 "text": " If <code>sequencesCountBuffer</code> is used, <code>sequencesCountOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>minSequenceCountBufferOffsetAlignment</code>" 19280 }, 19281 { 19282 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01340", 19283 "text": " If <code>sequencesIndexBuffer</code> is used, its usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 19284 }, 19285 { 19286 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01341", 19287 "text": " If <code>sequencesIndexBuffer</code> is used, <code>sequencesIndexOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>minSequenceIndexBufferOffsetAlignment</code>" 19288 }, 19289 { 19290 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sType-sType", 19291 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX</code>" 19292 }, 19293 { 19294 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-pNext-pNext", 19295 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19296 }, 19297 { 19298 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-objectTable-parameter", 19299 "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle" 19300 }, 19301 { 19302 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsLayout-parameter", 19303 "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkIndirectCommandsLayoutNVX</code> handle" 19304 }, 19305 { 19306 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-pIndirectCommandsTokens-parameter", 19307 "text": " <code>pIndirectCommandsTokens</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>indirectCommandsTokenCount</code> valid <code>VkIndirectCommandsTokenNVX</code> structures" 19308 }, 19309 { 19310 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-parameter", 19311 "text": " If <code>targetCommandBuffer</code> is not <code>NULL</code>, <code>targetCommandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 19312 }, 19313 { 19314 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-parameter", 19315 "text": " If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesCountBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 19316 }, 19317 { 19318 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-parameter", 19319 "text": " If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesIndexBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 19320 }, 19321 { 19322 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsTokenCount-arraylength", 19323 "text": " <code>indirectCommandsTokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 19324 }, 19325 { 19326 "vuid": "VUID-VkCmdProcessCommandsInfoNVX-commonparent", 19327 "text": " Each of <code>indirectCommandsLayout</code>, <code>objectTable</code>, <code>sequencesCountBuffer</code>, <code>sequencesIndexBuffer</code>, and <code>targetCommandBuffer</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 19328 } 19329 ] 19330 }, 19331 "vkGetPhysicalDeviceSparseImageFormatProperties": { 19332 "core": [ 19333 { 19334 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-01094", 19335 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>VkImageFormatProperties</code>::<code>sampleCounts</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>type</code>, <code>tiling</code>, and <code>usage</code> equal to those in this command and <code>flags</code> equal to the value that is set in <code>VkImageCreateInfo</code>::<code>flags</code> when the image is created" 19336 }, 19337 { 19338 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-physicalDevice-parameter", 19339 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 19340 }, 19341 { 19342 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-format-parameter", 19343 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 19344 }, 19345 { 19346 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-type-parameter", 19347 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value" 19348 }, 19349 { 19350 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-parameter", 19351 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 19352 }, 19353 { 19354 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-parameter", 19355 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 19356 }, 19357 { 19358 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-requiredbitmask", 19359 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 19360 }, 19361 { 19362 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-tiling-parameter", 19363 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value" 19364 }, 19365 { 19366 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pPropertyCount-parameter", 19367 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 19368 }, 19369 { 19370 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pProperties-parameter", 19371 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkSparseImageFormatProperties</code> structures" 19372 } 19373 ] 19374 }, 19375 "vkGetPhysicalDeviceSparseImageFormatProperties2": { 19376 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 19377 { 19378 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter", 19379 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 19380 }, 19381 { 19382 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pFormatInfo-parameter", 19383 "text": " <code>pFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSparseImageFormatInfo2</code> structure" 19384 }, 19385 { 19386 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pPropertyCount-parameter", 19387 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 19388 }, 19389 { 19390 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pProperties-parameter", 19391 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkSparseImageFormatProperties2</code> structures" 19392 } 19393 ] 19394 }, 19395 "VkPhysicalDeviceSparseImageFormatInfo2": { 19396 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 19397 { 19398 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-01095", 19399 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>VkImageFormatProperties</code>::<code>sampleCounts</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>type</code>, <code>tiling</code>, and <code>usage</code> equal to those in this command and <code>flags</code> equal to the value that is set in <code>VkImageCreateInfo</code>::<code>flags</code> when the image is created" 19400 }, 19401 { 19402 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-sType-sType", 19403 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2</code>" 19404 }, 19405 { 19406 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-pNext-pNext", 19407 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19408 }, 19409 { 19410 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-format-parameter", 19411 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 19412 }, 19413 { 19414 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-type-parameter", 19415 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value" 19416 }, 19417 { 19418 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-parameter", 19419 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 19420 }, 19421 { 19422 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-parameter", 19423 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 19424 }, 19425 { 19426 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-requiredbitmask", 19427 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 19428 }, 19429 { 19430 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-tiling-parameter", 19431 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value" 19432 } 19433 ] 19434 }, 19435 "VkSparseImageFormatProperties2": { 19436 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 19437 { 19438 "vuid": "VUID-VkSparseImageFormatProperties2-sType-sType", 19439 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2</code>" 19440 }, 19441 { 19442 "vuid": "VUID-VkSparseImageFormatProperties2-pNext-pNext", 19443 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19444 } 19445 ] 19446 }, 19447 "vkGetImageSparseMemoryRequirements": { 19448 "core": [ 19449 { 19450 "vuid": "VUID-vkGetImageSparseMemoryRequirements-device-parameter", 19451 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 19452 }, 19453 { 19454 "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parameter", 19455 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 19456 }, 19457 { 19458 "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirementCount-parameter", 19459 "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 19460 }, 19461 { 19462 "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter", 19463 "text": " If the value referenced by <code>pSparseMemoryRequirementCount</code> is not <code>0</code>, and <code>pSparseMemoryRequirements</code> is not <code>NULL</code>, <code>pSparseMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSparseMemoryRequirementCount</code> <code>VkSparseImageMemoryRequirements</code> structures" 19464 }, 19465 { 19466 "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parent", 19467 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 19468 } 19469 ] 19470 }, 19471 "vkGetImageSparseMemoryRequirements2": { 19472 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 19473 { 19474 "vuid": "VUID-vkGetImageSparseMemoryRequirements2-device-parameter", 19475 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 19476 }, 19477 { 19478 "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pInfo-parameter", 19479 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageSparseMemoryRequirementsInfo2</code> structure" 19480 }, 19481 { 19482 "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirementCount-parameter", 19483 "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 19484 }, 19485 { 19486 "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirements-parameter", 19487 "text": " If the value referenced by <code>pSparseMemoryRequirementCount</code> is not <code>0</code>, and <code>pSparseMemoryRequirements</code> is not <code>NULL</code>, <code>pSparseMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSparseMemoryRequirementCount</code> <code>VkSparseImageMemoryRequirements2</code> structures" 19488 } 19489 ] 19490 }, 19491 "VkImageSparseMemoryRequirementsInfo2": { 19492 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 19493 { 19494 "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-sType-sType", 19495 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2</code>" 19496 }, 19497 { 19498 "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-pNext-pNext", 19499 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19500 }, 19501 { 19502 "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-image-parameter", 19503 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 19504 } 19505 ] 19506 }, 19507 "VkSparseImageMemoryRequirements2": { 19508 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 19509 { 19510 "vuid": "VUID-VkSparseImageMemoryRequirements2-sType-sType", 19511 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2</code>" 19512 }, 19513 { 19514 "vuid": "VUID-VkSparseImageMemoryRequirements2-pNext-pNext", 19515 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19516 } 19517 ] 19518 }, 19519 "VkSparseMemoryBind": { 19520 "core": [ 19521 { 19522 "vuid": "VUID-VkSparseMemoryBind-memory-01096", 19523 "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> match the memory requirements of the resource, as described in section <a href=\"#resources-association\">Resource Memory Association</a>" 19524 }, 19525 { 19526 "vuid": "VUID-VkSparseMemoryBind-memory-01097", 19527 "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> not have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT</code> bit set" 19528 }, 19529 { 19530 "vuid": "VUID-VkSparseMemoryBind-size-01098", 19531 "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 19532 }, 19533 { 19534 "vuid": "VUID-VkSparseMemoryBind-resourceOffset-01099", 19535 "text": " <code>resourceOffset</code> <strong class=\"purple\">must</strong> be less than the size of the resource" 19536 }, 19537 { 19538 "vuid": "VUID-VkSparseMemoryBind-size-01100", 19539 "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the resource minus <code>resourceOffset</code>" 19540 }, 19541 { 19542 "vuid": "VUID-VkSparseMemoryBind-memoryOffset-01101", 19543 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>" 19544 }, 19545 { 19546 "vuid": "VUID-VkSparseMemoryBind-size-01102", 19547 "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>" 19548 }, 19549 { 19550 "vuid": "VUID-VkSparseMemoryBind-memory-parameter", 19551 "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle" 19552 }, 19553 { 19554 "vuid": "VUID-VkSparseMemoryBind-flags-parameter", 19555 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values" 19556 } 19557 ] 19558 }, 19559 "VkSparseBufferMemoryBindInfo": { 19560 "core": [ 19561 { 19562 "vuid": "VUID-VkSparseBufferMemoryBindInfo-buffer-parameter", 19563 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 19564 }, 19565 { 19566 "vuid": "VUID-VkSparseBufferMemoryBindInfo-pBinds-parameter", 19567 "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <code>VkSparseMemoryBind</code> structures" 19568 }, 19569 { 19570 "vuid": "VUID-VkSparseBufferMemoryBindInfo-bindCount-arraylength", 19571 "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 19572 } 19573 ] 19574 }, 19575 "VkSparseImageOpaqueMemoryBindInfo": { 19576 "core": [ 19577 { 19578 "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103", 19579 "text": " If the <code>flags</code> member of any element of <code>pBinds</code> contains <code>VK_SPARSE_MEMORY_BIND_METADATA_BIT</code>, the binding range defined <strong class=\"purple\">must</strong> be within the mip tail region of the metadata aspect of <code>image</code>" 19580 }, 19581 { 19582 "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-image-parameter", 19583 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 19584 }, 19585 { 19586 "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-parameter", 19587 "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <code>VkSparseMemoryBind</code> structures" 19588 }, 19589 { 19590 "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-bindCount-arraylength", 19591 "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 19592 } 19593 ] 19594 }, 19595 "VkSparseImageMemoryBindInfo": { 19596 "core": [ 19597 { 19598 "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01722", 19599 "text": " The <code>subresource.mipLevel</code> member of each element of <code>pBinds</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 19600 }, 19601 { 19602 "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01723", 19603 "text": " The <code>subresource.arrayLayer</code> member of each element of <code>pBinds</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 19604 }, 19605 { 19606 "vuid": "VUID-VkSparseImageMemoryBindInfo-image-parameter", 19607 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" 19608 }, 19609 { 19610 "vuid": "VUID-VkSparseImageMemoryBindInfo-pBinds-parameter", 19611 "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <code>VkSparseImageMemoryBind</code> structures" 19612 }, 19613 { 19614 "vuid": "VUID-VkSparseImageMemoryBindInfo-bindCount-arraylength", 19615 "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 19616 } 19617 ] 19618 }, 19619 "VkSparseImageMemoryBind": { 19620 "core": [ 19621 { 19622 "vuid": "VUID-VkSparseImageMemoryBind-memory-01104", 19623 "text": " If the <a href=\"#features-sparseResidencyAliased\">sparse aliased residency</a> feature is not enabled, and if any other resources are bound to ranges of <code>memory</code>, the range of <code>memory</code> being bound <strong class=\"purple\">must</strong> not overlap with those bound ranges" 19624 }, 19625 { 19626 "vuid": "VUID-VkSparseImageMemoryBind-memory-01105", 19627 "text": " <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> match the memory requirements of the calling command’s <code>image</code>, as described in section <a href=\"#resources-association\">Resource Memory Association</a>" 19628 }, 19629 { 19630 "vuid": "VUID-VkSparseImageMemoryBind-subresource-01106", 19631 "text": " <code>subresource</code> <strong class=\"purple\">must</strong> be a valid image subresource for <code>image</code> (see <a href=\"#resources-image-views\">Image Views</a>)" 19632 }, 19633 { 19634 "vuid": "VUID-VkSparseImageMemoryBind-offset-01107", 19635 "text": " <code>offset.x</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block width (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.width</code>) of the image" 19636 }, 19637 { 19638 "vuid": "VUID-VkSparseImageMemoryBind-extent-01108", 19639 "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block width of the image, or else <span class=\"eq\">(<code>extent.width</code> + <code>offset.x</code>)</span> <strong class=\"purple\">must</strong> equal the width of the image subresource" 19640 }, 19641 { 19642 "vuid": "VUID-VkSparseImageMemoryBind-offset-01109", 19643 "text": " <code>offset.y</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block height (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.height</code>) of the image" 19644 }, 19645 { 19646 "vuid": "VUID-VkSparseImageMemoryBind-extent-01110", 19647 "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of the image, or else <span class=\"eq\">(<code>extent.height</code> + <code>offset.y</code>)</span> <strong class=\"purple\">must</strong> equal the height of the image subresource" 19648 }, 19649 { 19650 "vuid": "VUID-VkSparseImageMemoryBind-offset-01111", 19651 "text": " <code>offset.z</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block depth (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.depth</code>) of the image" 19652 }, 19653 { 19654 "vuid": "VUID-VkSparseImageMemoryBind-extent-01112", 19655 "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block depth of the image, or else <span class=\"eq\">(<code>extent.depth</code> + <code>offset.z</code>)</span> <strong class=\"purple\">must</strong> equal the depth of the image subresource" 19656 }, 19657 { 19658 "vuid": "VUID-VkSparseImageMemoryBind-subresource-parameter", 19659 "text": " <code>subresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresource</code> structure" 19660 }, 19661 { 19662 "vuid": "VUID-VkSparseImageMemoryBind-memory-parameter", 19663 "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle" 19664 }, 19665 { 19666 "vuid": "VUID-VkSparseImageMemoryBind-flags-parameter", 19667 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values" 19668 } 19669 ] 19670 }, 19671 "vkQueueBindSparse": { 19672 "core": [ 19673 { 19674 "vuid": "VUID-vkQueueBindSparse-fence-01113", 19675 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be unsignaled" 19676 }, 19677 { 19678 "vuid": "VUID-vkQueueBindSparse-fence-01114", 19679 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue" 19680 }, 19681 { 19682 "vuid": "VUID-vkQueueBindSparse-pSignalSemaphores-01115", 19683 "text": " Each element of the <code>pSignalSemaphores</code> member of each element of <code>pBindInfo</code> <strong class=\"purple\">must</strong> be unsignaled when the semaphore signal operation it defines is executed on the device" 19684 }, 19685 { 19686 "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01116", 19687 "text": " When a semaphore unsignal operation defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pBindInfo</code> executes on <code>queue</code>, no other queue <strong class=\"purple\">must</strong> be waiting on the same semaphore." 19688 }, 19689 { 19690 "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01117", 19691 "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pBindInfo</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> previously submitted for execution." 19692 }, 19693 { 19694 "vuid": "VUID-vkQueueBindSparse-queue-parameter", 19695 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle" 19696 }, 19697 { 19698 "vuid": "VUID-vkQueueBindSparse-pBindInfo-parameter", 19699 "text": " If <code>bindInfoCount</code> is not <code>0</code>, <code>pBindInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindSparseInfo</code> structures" 19700 }, 19701 { 19702 "vuid": "VUID-vkQueueBindSparse-fence-parameter", 19703 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle" 19704 }, 19705 { 19706 "vuid": "VUID-vkQueueBindSparse-queuetype", 19707 "text": " The <code>queue</code> <strong class=\"purple\">must</strong> support sparse binding operations" 19708 }, 19709 { 19710 "vuid": "VUID-vkQueueBindSparse-commonparent", 19711 "text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 19712 } 19713 ] 19714 }, 19715 "VkBindSparseInfo": { 19716 "core": [ 19717 { 19718 "vuid": "VUID-VkBindSparseInfo-sType-sType", 19719 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_SPARSE_INFO</code>" 19720 }, 19721 { 19722 "vuid": "VUID-VkBindSparseInfo-pNext-pNext", 19723 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupBindSparseInfo\">VkDeviceGroupBindSparseInfo</a>" 19724 }, 19725 { 19726 "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-parameter", 19727 "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <code>VkSemaphore</code> handles" 19728 }, 19729 { 19730 "vuid": "VUID-VkBindSparseInfo-pBufferBinds-parameter", 19731 "text": " If <code>bufferBindCount</code> is not <code>0</code>, <code>pBufferBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferBindCount</code> valid <code>VkSparseBufferMemoryBindInfo</code> structures" 19732 }, 19733 { 19734 "vuid": "VUID-VkBindSparseInfo-pImageOpaqueBinds-parameter", 19735 "text": " If <code>imageOpaqueBindCount</code> is not <code>0</code>, <code>pImageOpaqueBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageOpaqueBindCount</code> valid <code>VkSparseImageOpaqueMemoryBindInfo</code> structures" 19736 }, 19737 { 19738 "vuid": "VUID-VkBindSparseInfo-pImageBinds-parameter", 19739 "text": " If <code>imageBindCount</code> is not <code>0</code>, <code>pImageBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageBindCount</code> valid <code>VkSparseImageMemoryBindInfo</code> structures" 19740 }, 19741 { 19742 "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-parameter", 19743 "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> valid <code>VkSemaphore</code> handles" 19744 }, 19745 { 19746 "vuid": "VUID-VkBindSparseInfo-commonparent", 19747 "text": " Both of the elements of <code>pSignalSemaphores</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 19748 } 19749 ] 19750 }, 19751 "VkDeviceGroupBindSparseInfo": { 19752 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 19753 { 19754 "vuid": "VUID-VkDeviceGroupBindSparseInfo-resourceDeviceIndex-01118", 19755 "text": " <code>resourceDeviceIndex</code> and <code>memoryDeviceIndex</code> <strong class=\"purple\">must</strong> both be valid device indices." 19756 }, 19757 { 19758 "vuid": "VUID-VkDeviceGroupBindSparseInfo-memoryDeviceIndex-01119", 19759 "text": " Each memory allocation bound in this batch <strong class=\"purple\">must</strong> have allocated an instance for <code>memoryDeviceIndex</code>." 19760 }, 19761 { 19762 "vuid": "VUID-VkDeviceGroupBindSparseInfo-sType-sType", 19763 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO</code>" 19764 } 19765 ] 19766 }, 19767 "vkCreateAndroidSurfaceKHR": { 19768 "(VK_KHR_surface)+(VK_KHR_android_surface)": [ 19769 { 19770 "vuid": "VUID-vkCreateAndroidSurfaceKHR-instance-parameter", 19771 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 19772 }, 19773 { 19774 "vuid": "VUID-vkCreateAndroidSurfaceKHR-pCreateInfo-parameter", 19775 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAndroidSurfaceCreateInfoKHR</code> structure" 19776 }, 19777 { 19778 "vuid": "VUID-vkCreateAndroidSurfaceKHR-pAllocator-parameter", 19779 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 19780 }, 19781 { 19782 "vuid": "VUID-vkCreateAndroidSurfaceKHR-pSurface-parameter", 19783 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle" 19784 } 19785 ] 19786 }, 19787 "VkAndroidSurfaceCreateInfoKHR": { 19788 "(VK_KHR_surface)+(VK_KHR_android_surface)": [ 19789 { 19790 "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-window-01248", 19791 "text": " <code>window</code> <strong class=\"purple\">must</strong> point to a valid Android <a href=\"#ANativeWindow\">ANativeWindow</a>." 19792 }, 19793 { 19794 "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-sType-sType", 19795 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR</code>" 19796 }, 19797 { 19798 "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-pNext-pNext", 19799 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19800 }, 19801 { 19802 "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-flags-zerobitmask", 19803 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 19804 } 19805 ] 19806 }, 19807 "vkCreateWaylandSurfaceKHR": { 19808 "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [ 19809 { 19810 "vuid": "VUID-vkCreateWaylandSurfaceKHR-instance-parameter", 19811 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 19812 }, 19813 { 19814 "vuid": "VUID-vkCreateWaylandSurfaceKHR-pCreateInfo-parameter", 19815 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkWaylandSurfaceCreateInfoKHR</code> structure" 19816 }, 19817 { 19818 "vuid": "VUID-vkCreateWaylandSurfaceKHR-pAllocator-parameter", 19819 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 19820 }, 19821 { 19822 "vuid": "VUID-vkCreateWaylandSurfaceKHR-pSurface-parameter", 19823 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle" 19824 } 19825 ] 19826 }, 19827 "VkWaylandSurfaceCreateInfoKHR": { 19828 "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [ 19829 { 19830 "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-display-01304", 19831 "text": " <code>display</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_display</code>." 19832 }, 19833 { 19834 "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-surface-01305", 19835 "text": " <code>surface</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_surface</code>." 19836 }, 19837 { 19838 "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-sType-sType", 19839 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR</code>" 19840 }, 19841 { 19842 "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-pNext-pNext", 19843 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19844 }, 19845 { 19846 "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-flags-zerobitmask", 19847 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 19848 } 19849 ] 19850 }, 19851 "vkCreateWin32SurfaceKHR": { 19852 "(VK_KHR_surface)+(VK_KHR_win32_surface)": [ 19853 { 19854 "vuid": "VUID-vkCreateWin32SurfaceKHR-instance-parameter", 19855 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 19856 }, 19857 { 19858 "vuid": "VUID-vkCreateWin32SurfaceKHR-pCreateInfo-parameter", 19859 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkWin32SurfaceCreateInfoKHR</code> structure" 19860 }, 19861 { 19862 "vuid": "VUID-vkCreateWin32SurfaceKHR-pAllocator-parameter", 19863 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 19864 }, 19865 { 19866 "vuid": "VUID-vkCreateWin32SurfaceKHR-pSurface-parameter", 19867 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle" 19868 } 19869 ] 19870 }, 19871 "VkWin32SurfaceCreateInfoKHR": { 19872 "(VK_KHR_surface)+(VK_KHR_win32_surface)": [ 19873 { 19874 "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hinstance-01307", 19875 "text": " <code>hinstance</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HINSTANCE</code>." 19876 }, 19877 { 19878 "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hwnd-01308", 19879 "text": " <code>hwnd</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HWND</code>." 19880 }, 19881 { 19882 "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-sType-sType", 19883 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR</code>" 19884 }, 19885 { 19886 "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-pNext-pNext", 19887 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19888 }, 19889 { 19890 "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-flags-zerobitmask", 19891 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 19892 } 19893 ] 19894 }, 19895 "vkCreateXcbSurfaceKHR": { 19896 "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [ 19897 { 19898 "vuid": "VUID-vkCreateXcbSurfaceKHR-instance-parameter", 19899 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 19900 }, 19901 { 19902 "vuid": "VUID-vkCreateXcbSurfaceKHR-pCreateInfo-parameter", 19903 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkXcbSurfaceCreateInfoKHR</code> structure" 19904 }, 19905 { 19906 "vuid": "VUID-vkCreateXcbSurfaceKHR-pAllocator-parameter", 19907 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 19908 }, 19909 { 19910 "vuid": "VUID-vkCreateXcbSurfaceKHR-pSurface-parameter", 19911 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle" 19912 } 19913 ] 19914 }, 19915 "VkXcbSurfaceCreateInfoKHR": { 19916 "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [ 19917 { 19918 "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-connection-01310", 19919 "text": " <code>connection</code> <strong class=\"purple\">must</strong> point to a valid X11 <code>xcb_connection_t</code>." 19920 }, 19921 { 19922 "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-window-01311", 19923 "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid X11 <code>xcb_window_t</code>." 19924 }, 19925 { 19926 "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-sType-sType", 19927 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR</code>" 19928 }, 19929 { 19930 "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-pNext-pNext", 19931 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19932 }, 19933 { 19934 "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-flags-zerobitmask", 19935 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 19936 } 19937 ] 19938 }, 19939 "vkCreateXlibSurfaceKHR": { 19940 "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [ 19941 { 19942 "vuid": "VUID-vkCreateXlibSurfaceKHR-instance-parameter", 19943 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 19944 }, 19945 { 19946 "vuid": "VUID-vkCreateXlibSurfaceKHR-pCreateInfo-parameter", 19947 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkXlibSurfaceCreateInfoKHR</code> structure" 19948 }, 19949 { 19950 "vuid": "VUID-vkCreateXlibSurfaceKHR-pAllocator-parameter", 19951 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 19952 }, 19953 { 19954 "vuid": "VUID-vkCreateXlibSurfaceKHR-pSurface-parameter", 19955 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle" 19956 } 19957 ] 19958 }, 19959 "VkXlibSurfaceCreateInfoKHR": { 19960 "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [ 19961 { 19962 "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-dpy-01313", 19963 "text": " <code>dpy</code> <strong class=\"purple\">must</strong> point to a valid Xlib <code>Display</code>." 19964 }, 19965 { 19966 "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-window-01314", 19967 "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid Xlib <code>Window</code>." 19968 }, 19969 { 19970 "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-sType-sType", 19971 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR</code>" 19972 }, 19973 { 19974 "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-pNext-pNext", 19975 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19976 }, 19977 { 19978 "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-flags-zerobitmask", 19979 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 19980 } 19981 ] 19982 }, 19983 "vkCreateImagePipeSurfaceFUCHSIA": { 19984 "(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [ 19985 { 19986 "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-instance-parameter", 19987 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 19988 }, 19989 { 19990 "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pCreateInfo-parameter", 19991 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImagePipeSurfaceCreateInfoFUCHSIA</code> structure" 19992 }, 19993 { 19994 "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pAllocator-parameter", 19995 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 19996 }, 19997 { 19998 "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pSurface-parameter", 19999 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle" 20000 } 20001 ] 20002 }, 20003 "VkImagePipeSurfaceCreateInfoFUCHSIA": { 20004 "(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [ 20005 { 20006 "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-imagePipeHandle-00000", 20007 "text": " <code>imagePipeHandle</code> <strong class=\"purple\">must</strong> be a valid <code>zx_handle_t</code>" 20008 }, 20009 { 20010 "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-sType-sType", 20011 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA</code>" 20012 }, 20013 { 20014 "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-pNext-pNext", 20015 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20016 }, 20017 { 20018 "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-flags-zerobitmask", 20019 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 20020 } 20021 ] 20022 }, 20023 "vkCreateIOSSurfaceMVK": { 20024 "(VK_KHR_surface)+(VK_MVK_ios_surface)": [ 20025 { 20026 "vuid": "VUID-vkCreateIOSSurfaceMVK-instance-parameter", 20027 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 20028 }, 20029 { 20030 "vuid": "VUID-vkCreateIOSSurfaceMVK-pCreateInfo-parameter", 20031 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkIOSSurfaceCreateInfoMVK</code> structure" 20032 }, 20033 { 20034 "vuid": "VUID-vkCreateIOSSurfaceMVK-pAllocator-parameter", 20035 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 20036 }, 20037 { 20038 "vuid": "VUID-vkCreateIOSSurfaceMVK-pSurface-parameter", 20039 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle" 20040 } 20041 ] 20042 }, 20043 "VkIOSSurfaceCreateInfoMVK": { 20044 "(VK_KHR_surface)+(VK_MVK_ios_surface)": [ 20045 { 20046 "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pView-01316", 20047 "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid <code>UIView</code> and <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> instance of type <a href=\"#CAMetalLayer\">CAMetalLayer</a>." 20048 }, 20049 { 20050 "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-sType-sType", 20051 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK</code>" 20052 }, 20053 { 20054 "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pNext-pNext", 20055 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20056 }, 20057 { 20058 "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-flags-zerobitmask", 20059 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 20060 } 20061 ] 20062 }, 20063 "vkCreateMacOSSurfaceMVK": { 20064 "(VK_KHR_surface)+(VK_MVK_macos_surface)": [ 20065 { 20066 "vuid": "VUID-vkCreateMacOSSurfaceMVK-instance-parameter", 20067 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 20068 }, 20069 { 20070 "vuid": "VUID-vkCreateMacOSSurfaceMVK-pCreateInfo-parameter", 20071 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMacOSSurfaceCreateInfoMVK</code> structure" 20072 }, 20073 { 20074 "vuid": "VUID-vkCreateMacOSSurfaceMVK-pAllocator-parameter", 20075 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 20076 }, 20077 { 20078 "vuid": "VUID-vkCreateMacOSSurfaceMVK-pSurface-parameter", 20079 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle" 20080 } 20081 ] 20082 }, 20083 "VkMacOSSurfaceCreateInfoMVK": { 20084 "(VK_KHR_surface)+(VK_MVK_macos_surface)": [ 20085 { 20086 "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pView-01317", 20087 "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid <code>NSView</code> and <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> instance of type <a href=\"#CAMetalLayer\">CAMetalLayer</a>." 20088 }, 20089 { 20090 "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-sType-sType", 20091 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK</code>" 20092 }, 20093 { 20094 "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pNext-pNext", 20095 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20096 }, 20097 { 20098 "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-flags-zerobitmask", 20099 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 20100 } 20101 ] 20102 }, 20103 "vkCreateViSurfaceNN": { 20104 "(VK_KHR_surface)+(VK_NN_vi_surface)": [ 20105 { 20106 "vuid": "VUID-vkCreateViSurfaceNN-instance-parameter", 20107 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 20108 }, 20109 { 20110 "vuid": "VUID-vkCreateViSurfaceNN-pCreateInfo-parameter", 20111 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkViSurfaceCreateInfoNN</code> structure" 20112 }, 20113 { 20114 "vuid": "VUID-vkCreateViSurfaceNN-pAllocator-parameter", 20115 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 20116 }, 20117 { 20118 "vuid": "VUID-vkCreateViSurfaceNN-pSurface-parameter", 20119 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle" 20120 } 20121 ] 20122 }, 20123 "VkViSurfaceCreateInfoNN": { 20124 "(VK_KHR_surface)+(VK_NN_vi_surface)": [ 20125 { 20126 "vuid": "VUID-VkViSurfaceCreateInfoNN-window-01318", 20127 "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid <code>nn</code>::<code>vi</code>::<code>NativeWindowHandle</code>" 20128 }, 20129 { 20130 "vuid": "VUID-VkViSurfaceCreateInfoNN-sType-sType", 20131 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN</code>" 20132 }, 20133 { 20134 "vuid": "VUID-VkViSurfaceCreateInfoNN-pNext-pNext", 20135 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20136 }, 20137 { 20138 "vuid": "VUID-VkViSurfaceCreateInfoNN-flags-zerobitmask", 20139 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 20140 } 20141 ] 20142 }, 20143 "vkCreateMetalSurfaceEXT": { 20144 "(VK_KHR_surface)+(VK_EXT_metal_surface)": [ 20145 { 20146 "vuid": "VUID-vkCreateMetalSurfaceEXT-instance-parameter", 20147 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 20148 }, 20149 { 20150 "vuid": "VUID-vkCreateMetalSurfaceEXT-pCreateInfo-parameter", 20151 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMetalSurfaceCreateInfoEXT</code> structure" 20152 }, 20153 { 20154 "vuid": "VUID-vkCreateMetalSurfaceEXT-pAllocator-parameter", 20155 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 20156 }, 20157 { 20158 "vuid": "VUID-vkCreateMetalSurfaceEXT-pSurface-parameter", 20159 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle" 20160 } 20161 ] 20162 }, 20163 "VkMetalSurfaceCreateInfoEXT": { 20164 "(VK_KHR_surface)+(VK_EXT_metal_surface)": [ 20165 { 20166 "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-sType-sType", 20167 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT</code>" 20168 }, 20169 { 20170 "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-pNext-pNext", 20171 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20172 }, 20173 { 20174 "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-flags-zerobitmask", 20175 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 20176 } 20177 ] 20178 }, 20179 "vkDestroySurfaceKHR": { 20180 "(VK_KHR_surface)": [ 20181 { 20182 "vuid": "VUID-vkDestroySurfaceKHR-surface-01266", 20183 "text": " All <code>VkSwapchainKHR</code> objects created for <code>surface</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>surface</code>" 20184 }, 20185 { 20186 "vuid": "VUID-vkDestroySurfaceKHR-surface-01267", 20187 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>surface</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 20188 }, 20189 { 20190 "vuid": "VUID-vkDestroySurfaceKHR-surface-01268", 20191 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>surface</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20192 }, 20193 { 20194 "vuid": "VUID-vkDestroySurfaceKHR-instance-parameter", 20195 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 20196 }, 20197 { 20198 "vuid": "VUID-vkDestroySurfaceKHR-surface-parameter", 20199 "text": " If <code>surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle" 20200 }, 20201 { 20202 "vuid": "VUID-vkDestroySurfaceKHR-pAllocator-parameter", 20203 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 20204 }, 20205 { 20206 "vuid": "VUID-vkDestroySurfaceKHR-surface-parent", 20207 "text": " If <code>surface</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>" 20208 } 20209 ] 20210 }, 20211 "vkGetPhysicalDeviceDisplayPropertiesKHR": { 20212 "(VK_KHR_surface)+(VK_KHR_display)": [ 20213 { 20214 "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-physicalDevice-parameter", 20215 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20216 }, 20217 { 20218 "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pPropertyCount-parameter", 20219 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 20220 }, 20221 { 20222 "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pProperties-parameter", 20223 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayPropertiesKHR</code> structures" 20224 } 20225 ] 20226 }, 20227 "vkGetPhysicalDeviceDisplayProperties2KHR": { 20228 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 20229 { 20230 "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-physicalDevice-parameter", 20231 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20232 }, 20233 { 20234 "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pPropertyCount-parameter", 20235 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 20236 }, 20237 { 20238 "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pProperties-parameter", 20239 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayProperties2KHR</code> structures" 20240 } 20241 ] 20242 }, 20243 "VkDisplayProperties2KHR": { 20244 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 20245 { 20246 "vuid": "VUID-VkDisplayProperties2KHR-sType-sType", 20247 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR</code>" 20248 }, 20249 { 20250 "vuid": "VUID-VkDisplayProperties2KHR-pNext-pNext", 20251 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20252 } 20253 ] 20254 }, 20255 "vkAcquireXlibDisplayEXT": { 20256 "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [ 20257 { 20258 "vuid": "VUID-vkAcquireXlibDisplayEXT-physicalDevice-parameter", 20259 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20260 }, 20261 { 20262 "vuid": "VUID-vkAcquireXlibDisplayEXT-dpy-parameter", 20263 "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value" 20264 }, 20265 { 20266 "vuid": "VUID-vkAcquireXlibDisplayEXT-display-parameter", 20267 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle" 20268 } 20269 ] 20270 }, 20271 "vkGetRandROutputDisplayEXT": { 20272 "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [ 20273 { 20274 "vuid": "VUID-vkGetRandROutputDisplayEXT-physicalDevice-parameter", 20275 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20276 }, 20277 { 20278 "vuid": "VUID-vkGetRandROutputDisplayEXT-dpy-parameter", 20279 "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value" 20280 }, 20281 { 20282 "vuid": "VUID-vkGetRandROutputDisplayEXT-pDisplay-parameter", 20283 "text": " <code>pDisplay</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayKHR</code> handle" 20284 } 20285 ] 20286 }, 20287 "vkReleaseDisplayEXT": { 20288 "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)": [ 20289 { 20290 "vuid": "VUID-vkReleaseDisplayEXT-physicalDevice-parameter", 20291 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20292 }, 20293 { 20294 "vuid": "VUID-vkReleaseDisplayEXT-display-parameter", 20295 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle" 20296 } 20297 ] 20298 }, 20299 "vkGetPhysicalDeviceDisplayPlanePropertiesKHR": { 20300 "(VK_KHR_surface)+(VK_KHR_display)": [ 20301 { 20302 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-physicalDevice-parameter", 20303 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20304 }, 20305 { 20306 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pPropertyCount-parameter", 20307 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 20308 }, 20309 { 20310 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pProperties-parameter", 20311 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayPlanePropertiesKHR</code> structures" 20312 } 20313 ] 20314 }, 20315 "vkGetPhysicalDeviceDisplayPlaneProperties2KHR": { 20316 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 20317 { 20318 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-physicalDevice-parameter", 20319 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20320 }, 20321 { 20322 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pPropertyCount-parameter", 20323 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 20324 }, 20325 { 20326 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pProperties-parameter", 20327 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayPlaneProperties2KHR</code> structures" 20328 } 20329 ] 20330 }, 20331 "VkDisplayPlaneProperties2KHR": { 20332 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 20333 { 20334 "vuid": "VUID-VkDisplayPlaneProperties2KHR-sType-sType", 20335 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR</code>" 20336 }, 20337 { 20338 "vuid": "VUID-VkDisplayPlaneProperties2KHR-pNext-pNext", 20339 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20340 } 20341 ] 20342 }, 20343 "vkGetDisplayPlaneSupportedDisplaysKHR": { 20344 "(VK_KHR_surface)+(VK_KHR_display)": [ 20345 { 20346 "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-planeIndex-01249", 20347 "text": " <code>planeIndex</code> <strong class=\"purple\">must</strong> be less than the number of display planes supported by the device as determined by calling <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code>" 20348 }, 20349 { 20350 "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-physicalDevice-parameter", 20351 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20352 }, 20353 { 20354 "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplayCount-parameter", 20355 "text": " <code>pDisplayCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 20356 }, 20357 { 20358 "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplays-parameter", 20359 "text": " If the value referenced by <code>pDisplayCount</code> is not <code>0</code>, and <code>pDisplays</code> is not <code>NULL</code>, <code>pDisplays</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDisplayCount</code> <code>VkDisplayKHR</code> handles" 20360 } 20361 ] 20362 }, 20363 "vkGetDisplayModePropertiesKHR": { 20364 "(VK_KHR_surface)+(VK_KHR_display)": [ 20365 { 20366 "vuid": "VUID-vkGetDisplayModePropertiesKHR-physicalDevice-parameter", 20367 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20368 }, 20369 { 20370 "vuid": "VUID-vkGetDisplayModePropertiesKHR-display-parameter", 20371 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle" 20372 }, 20373 { 20374 "vuid": "VUID-vkGetDisplayModePropertiesKHR-pPropertyCount-parameter", 20375 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 20376 }, 20377 { 20378 "vuid": "VUID-vkGetDisplayModePropertiesKHR-pProperties-parameter", 20379 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayModePropertiesKHR</code> structures" 20380 } 20381 ] 20382 }, 20383 "vkGetDisplayModeProperties2KHR": { 20384 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 20385 { 20386 "vuid": "VUID-vkGetDisplayModeProperties2KHR-physicalDevice-parameter", 20387 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20388 }, 20389 { 20390 "vuid": "VUID-vkGetDisplayModeProperties2KHR-display-parameter", 20391 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle" 20392 }, 20393 { 20394 "vuid": "VUID-vkGetDisplayModeProperties2KHR-pPropertyCount-parameter", 20395 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 20396 }, 20397 { 20398 "vuid": "VUID-vkGetDisplayModeProperties2KHR-pProperties-parameter", 20399 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayModeProperties2KHR</code> structures" 20400 } 20401 ] 20402 }, 20403 "VkDisplayModeProperties2KHR": { 20404 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 20405 { 20406 "vuid": "VUID-VkDisplayModeProperties2KHR-sType-sType", 20407 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR</code>" 20408 }, 20409 { 20410 "vuid": "VUID-VkDisplayModeProperties2KHR-pNext-pNext", 20411 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20412 } 20413 ] 20414 }, 20415 "VkDisplayModeParametersKHR": { 20416 "(VK_KHR_surface)+(VK_KHR_display)": [ 20417 { 20418 "vuid": "VUID-VkDisplayModeParametersKHR-width-01990", 20419 "text": " The <code>width</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 20420 }, 20421 { 20422 "vuid": "VUID-VkDisplayModeParametersKHR-height-01991", 20423 "text": " The <code>height</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 20424 }, 20425 { 20426 "vuid": "VUID-VkDisplayModeParametersKHR-refreshRate-01992", 20427 "text": " <code>refreshRate</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 20428 } 20429 ] 20430 }, 20431 "vkCreateDisplayModeKHR": { 20432 "(VK_KHR_surface)+(VK_KHR_display)": [ 20433 { 20434 "vuid": "VUID-vkCreateDisplayModeKHR-physicalDevice-parameter", 20435 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20436 }, 20437 { 20438 "vuid": "VUID-vkCreateDisplayModeKHR-display-parameter", 20439 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle" 20440 }, 20441 { 20442 "vuid": "VUID-vkCreateDisplayModeKHR-pCreateInfo-parameter", 20443 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayModeCreateInfoKHR</code> structure" 20444 }, 20445 { 20446 "vuid": "VUID-vkCreateDisplayModeKHR-pAllocator-parameter", 20447 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 20448 }, 20449 { 20450 "vuid": "VUID-vkCreateDisplayModeKHR-pMode-parameter", 20451 "text": " <code>pMode</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayModeKHR</code> handle" 20452 } 20453 ] 20454 }, 20455 "VkDisplayModeCreateInfoKHR": { 20456 "(VK_KHR_surface)+(VK_KHR_display)": [ 20457 { 20458 "vuid": "VUID-VkDisplayModeCreateInfoKHR-sType-sType", 20459 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR</code>" 20460 }, 20461 { 20462 "vuid": "VUID-VkDisplayModeCreateInfoKHR-pNext-pNext", 20463 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20464 }, 20465 { 20466 "vuid": "VUID-VkDisplayModeCreateInfoKHR-flags-zerobitmask", 20467 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 20468 }, 20469 { 20470 "vuid": "VUID-VkDisplayModeCreateInfoKHR-parameters-parameter", 20471 "text": " <code>parameters</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeParametersKHR</code> structure" 20472 } 20473 ] 20474 }, 20475 "vkGetDisplayPlaneCapabilitiesKHR": { 20476 "(VK_KHR_surface)+(VK_KHR_display)": [ 20477 { 20478 "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter", 20479 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20480 }, 20481 { 20482 "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-mode-parameter", 20483 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeKHR</code> handle" 20484 }, 20485 { 20486 "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-pCapabilities-parameter", 20487 "text": " <code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayPlaneCapabilitiesKHR</code> structure" 20488 } 20489 ] 20490 }, 20491 "vkGetDisplayPlaneCapabilities2KHR": { 20492 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 20493 { 20494 "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-physicalDevice-parameter", 20495 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20496 }, 20497 { 20498 "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pDisplayPlaneInfo-parameter", 20499 "text": " <code>pDisplayPlaneInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayPlaneInfo2KHR</code> structure" 20500 }, 20501 { 20502 "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pCapabilities-parameter", 20503 "text": " <code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayPlaneCapabilities2KHR</code> structure" 20504 } 20505 ] 20506 }, 20507 "VkDisplayPlaneInfo2KHR": { 20508 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 20509 { 20510 "vuid": "VUID-VkDisplayPlaneInfo2KHR-sType-sType", 20511 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR</code>" 20512 }, 20513 { 20514 "vuid": "VUID-VkDisplayPlaneInfo2KHR-pNext-pNext", 20515 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20516 }, 20517 { 20518 "vuid": "VUID-VkDisplayPlaneInfo2KHR-mode-parameter", 20519 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeKHR</code> handle" 20520 } 20521 ] 20522 }, 20523 "VkDisplayPlaneCapabilities2KHR": { 20524 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 20525 { 20526 "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-sType-sType", 20527 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR</code>" 20528 }, 20529 { 20530 "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-pNext-pNext", 20531 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20532 } 20533 ] 20534 }, 20535 "vkDisplayPowerControlEXT": { 20536 "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [ 20537 { 20538 "vuid": "VUID-vkDisplayPowerControlEXT-device-parameter", 20539 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 20540 }, 20541 { 20542 "vuid": "VUID-vkDisplayPowerControlEXT-display-parameter", 20543 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle" 20544 }, 20545 { 20546 "vuid": "VUID-vkDisplayPowerControlEXT-pDisplayPowerInfo-parameter", 20547 "text": " <code>pDisplayPowerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayPowerInfoEXT</code> structure" 20548 } 20549 ] 20550 }, 20551 "VkDisplayPowerInfoEXT": { 20552 "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [ 20553 { 20554 "vuid": "VUID-VkDisplayPowerInfoEXT-sType-sType", 20555 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT</code>" 20556 }, 20557 { 20558 "vuid": "VUID-VkDisplayPowerInfoEXT-pNext-pNext", 20559 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20560 }, 20561 { 20562 "vuid": "VUID-VkDisplayPowerInfoEXT-powerState-parameter", 20563 "text": " <code>powerState</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPowerStateEXT\">VkDisplayPowerStateEXT</a> value" 20564 } 20565 ] 20566 }, 20567 "vkCreateDisplayPlaneSurfaceKHR": { 20568 "(VK_KHR_surface)+(VK_KHR_display)": [ 20569 { 20570 "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-instance-parameter", 20571 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 20572 }, 20573 { 20574 "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pCreateInfo-parameter", 20575 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplaySurfaceCreateInfoKHR</code> structure" 20576 }, 20577 { 20578 "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pAllocator-parameter", 20579 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 20580 }, 20581 { 20582 "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pSurface-parameter", 20583 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle" 20584 } 20585 ] 20586 }, 20587 "VkDisplaySurfaceCreateInfoKHR": { 20588 "(VK_KHR_surface)+(VK_KHR_display)": [ 20589 { 20590 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeIndex-01252", 20591 "text": " <code>planeIndex</code> <strong class=\"purple\">must</strong> be less than the number of display planes supported by the device as determined by calling <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code>" 20592 }, 20593 { 20594 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeReorderPossible-01253", 20595 "text": " If the <code>planeReorderPossible</code> member of the <code>VkDisplayPropertiesKHR</code> structure returned by <code>vkGetPhysicalDeviceDisplayPropertiesKHR</code> for the display corresponding to <code>displayMode</code> is <code>VK_TRUE</code> then <code>planeStackIndex</code> <strong class=\"purple\">must</strong> be less than the number of display planes supported by the device as determined by calling <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code>; otherwise <code>planeStackIndex</code> <strong class=\"purple\">must</strong> equal the <code>currentStackIndex</code> member of <code>VkDisplayPlanePropertiesKHR</code> returned by <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code> for the display plane corresponding to <code>displayMode</code>" 20596 }, 20597 { 20598 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01254", 20599 "text": " If <code>alphaMode</code> is <code>VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR</code> then <code>globalAlpha</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive" 20600 }, 20601 { 20602 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01255", 20603 "text": " <code>alphaMode</code> <strong class=\"purple\">must</strong> be <code>0</code> or one of the bits present in the <code>supportedAlpha</code> member of <code>VkDisplayPlaneCapabilitiesKHR</code> returned by <code>vkGetDisplayPlaneCapabilitiesKHR</code> for the display plane corresponding to <code>displayMode</code>" 20604 }, 20605 { 20606 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-width-01256", 20607 "text": " The <code>width</code> and <code>height</code> members of <code>imageExtent</code> <strong class=\"purple\">must</strong> be less than the <code>maxImageDimensions2D</code> member of <code>VkPhysicalDeviceLimits</code>" 20608 }, 20609 { 20610 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-sType-sType", 20611 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR</code>" 20612 }, 20613 { 20614 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-pNext-pNext", 20615 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20616 }, 20617 { 20618 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-flags-zerobitmask", 20619 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 20620 }, 20621 { 20622 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-displayMode-parameter", 20623 "text": " <code>displayMode</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeKHR</code> handle" 20624 }, 20625 { 20626 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-transform-parameter", 20627 "text": " <code>transform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value" 20628 }, 20629 { 20630 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-parameter", 20631 "text": " <code>alphaMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPlaneAlphaFlagBitsKHR\">VkDisplayPlaneAlphaFlagBitsKHR</a> value" 20632 } 20633 ] 20634 }, 20635 "vkGetPhysicalDeviceSurfaceSupportKHR": { 20636 "(VK_KHR_surface)": [ 20637 { 20638 "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-queueFamilyIndex-01269", 20639 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>" 20640 }, 20641 { 20642 "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter", 20643 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20644 }, 20645 { 20646 "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-surface-parameter", 20647 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle" 20648 }, 20649 { 20650 "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter", 20651 "text": " <code>pSupported</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBool32</code> value" 20652 }, 20653 { 20654 "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent", 20655 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 20656 } 20657 ] 20658 }, 20659 "vkGetPhysicalDeviceWaylandPresentationSupportKHR": { 20660 "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [ 20661 { 20662 "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-queueFamilyIndex-01306", 20663 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>" 20664 }, 20665 { 20666 "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter", 20667 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20668 }, 20669 { 20670 "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-display-parameter", 20671 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>wl_display</code> value" 20672 } 20673 ] 20674 }, 20675 "vkGetPhysicalDeviceWin32PresentationSupportKHR": { 20676 "(VK_KHR_surface)+(VK_KHR_win32_surface)": [ 20677 { 20678 "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-queueFamilyIndex-01309", 20679 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>" 20680 }, 20681 { 20682 "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter", 20683 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20684 } 20685 ] 20686 }, 20687 "vkGetPhysicalDeviceXcbPresentationSupportKHR": { 20688 "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [ 20689 { 20690 "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-queueFamilyIndex-01312", 20691 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>" 20692 }, 20693 { 20694 "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter", 20695 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20696 }, 20697 { 20698 "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-connection-parameter", 20699 "text": " <code>connection</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>xcb_connection_t</code> value" 20700 } 20701 ] 20702 }, 20703 "vkGetPhysicalDeviceXlibPresentationSupportKHR": { 20704 "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [ 20705 { 20706 "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-queueFamilyIndex-01315", 20707 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>" 20708 }, 20709 { 20710 "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter", 20711 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20712 }, 20713 { 20714 "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-dpy-parameter", 20715 "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value" 20716 } 20717 ] 20718 }, 20719 "vkGetPhysicalDeviceSurfaceCapabilitiesKHR": { 20720 "(VK_KHR_surface)": [ 20721 { 20722 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter", 20723 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20724 }, 20725 { 20726 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-parameter", 20727 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle" 20728 }, 20729 { 20730 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-pSurfaceCapabilities-parameter", 20731 "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceCapabilitiesKHR</code> structure" 20732 }, 20733 { 20734 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-commonparent", 20735 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 20736 } 20737 ] 20738 }, 20739 "vkGetPhysicalDeviceSurfaceCapabilities2KHR": { 20740 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [ 20741 { 20742 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter", 20743 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20744 }, 20745 { 20746 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-parameter", 20747 "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSurfaceInfo2KHR</code> structure" 20748 }, 20749 { 20750 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceCapabilities-parameter", 20751 "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceCapabilities2KHR</code> structure" 20752 } 20753 ] 20754 }, 20755 "VkPhysicalDeviceSurfaceInfo2KHR": { 20756 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [ 20757 { 20758 "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType", 20759 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR</code>" 20760 }, 20761 { 20762 "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext", 20763 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20764 }, 20765 { 20766 "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter", 20767 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle" 20768 } 20769 ] 20770 }, 20771 "VkSurfaceCapabilities2KHR": { 20772 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [ 20773 { 20774 "vuid": "VUID-VkSurfaceCapabilities2KHR-sType-sType", 20775 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR</code>" 20776 }, 20777 { 20778 "vuid": "VUID-VkSurfaceCapabilities2KHR-pNext-pNext", 20779 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSharedPresentSurfaceCapabilitiesKHR\">VkSharedPresentSurfaceCapabilitiesKHR</a>" 20780 } 20781 ] 20782 }, 20783 "VkSharedPresentSurfaceCapabilitiesKHR": { 20784 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_shared_presentable_image)": [ 20785 { 20786 "vuid": "VUID-VkSharedPresentSurfaceCapabilitiesKHR-sType-sType", 20787 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR</code>" 20788 } 20789 ] 20790 }, 20791 "vkGetPhysicalDeviceSurfaceCapabilities2EXT": { 20792 "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [ 20793 { 20794 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-physicalDevice-parameter", 20795 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20796 }, 20797 { 20798 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-parameter", 20799 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle" 20800 }, 20801 { 20802 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-pSurfaceCapabilities-parameter", 20803 "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceCapabilities2EXT</code> structure" 20804 }, 20805 { 20806 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-commonparent", 20807 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 20808 } 20809 ] 20810 }, 20811 "VkSurfaceCapabilities2EXT": { 20812 "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [ 20813 { 20814 "vuid": "VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246", 20815 "text": " <code>supportedSurfaceCounters</code> <strong class=\"purple\">must</strong> not include <code>VK_SURFACE_COUNTER_VBLANK_EXT</code> unless the surface queried is a <a href=\"#wsi-display-surfaces\">display surface</a>." 20816 }, 20817 { 20818 "vuid": "VUID-VkSurfaceCapabilities2EXT-sType-sType", 20819 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT</code>" 20820 }, 20821 { 20822 "vuid": "VUID-VkSurfaceCapabilities2EXT-pNext-pNext", 20823 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20824 } 20825 ] 20826 }, 20827 "vkGetPhysicalDeviceSurfaceFormatsKHR": { 20828 "(VK_KHR_surface)": [ 20829 { 20830 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter", 20831 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20832 }, 20833 { 20834 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-parameter", 20835 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle" 20836 }, 20837 { 20838 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormatCount-parameter", 20839 "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 20840 }, 20841 { 20842 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormats-parameter", 20843 "text": " If the value referenced by <code>pSurfaceFormatCount</code> is not <code>0</code>, and <code>pSurfaceFormats</code> is not <code>NULL</code>, <code>pSurfaceFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSurfaceFormatCount</code> <code>VkSurfaceFormatKHR</code> structures" 20844 }, 20845 { 20846 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-commonparent", 20847 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 20848 } 20849 ] 20850 }, 20851 "vkGetPhysicalDeviceSurfaceFormats2KHR": { 20852 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [ 20853 { 20854 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-physicalDevice-parameter", 20855 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20856 }, 20857 { 20858 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-parameter", 20859 "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSurfaceInfo2KHR</code> structure" 20860 }, 20861 { 20862 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormatCount-parameter", 20863 "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 20864 }, 20865 { 20866 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormats-parameter", 20867 "text": " If the value referenced by <code>pSurfaceFormatCount</code> is not <code>0</code>, and <code>pSurfaceFormats</code> is not <code>NULL</code>, <code>pSurfaceFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSurfaceFormatCount</code> <code>VkSurfaceFormat2KHR</code> structures" 20868 } 20869 ] 20870 }, 20871 "VkSurfaceFormat2KHR": { 20872 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [ 20873 { 20874 "vuid": "VUID-VkSurfaceFormat2KHR-sType-sType", 20875 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR</code>" 20876 }, 20877 { 20878 "vuid": "VUID-VkSurfaceFormat2KHR-pNext-pNext", 20879 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20880 } 20881 ] 20882 }, 20883 "vkGetPhysicalDeviceSurfacePresentModesKHR": { 20884 "(VK_KHR_surface)": [ 20885 { 20886 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter", 20887 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20888 }, 20889 { 20890 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-parameter", 20891 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle" 20892 }, 20893 { 20894 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModeCount-parameter", 20895 "text": " <code>pPresentModeCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 20896 }, 20897 { 20898 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModes-parameter", 20899 "text": " If the value referenced by <code>pPresentModeCount</code> is not <code>0</code>, and <code>pPresentModes</code> is not <code>NULL</code>, <code>pPresentModes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPresentModeCount</code> <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values" 20900 }, 20901 { 20902 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-commonparent", 20903 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 20904 } 20905 ] 20906 }, 20907 "vkGetDeviceGroupPresentCapabilitiesKHR": { 20908 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 20909 { 20910 "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-device-parameter", 20911 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 20912 }, 20913 { 20914 "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-pDeviceGroupPresentCapabilities-parameter", 20915 "text": " <code>pDeviceGroupPresentCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceGroupPresentCapabilitiesKHR</code> structure" 20916 } 20917 ] 20918 }, 20919 "VkDeviceGroupPresentCapabilitiesKHR": { 20920 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 20921 { 20922 "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-sType-sType", 20923 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR</code>" 20924 }, 20925 { 20926 "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-pNext-pNext", 20927 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20928 } 20929 ] 20930 }, 20931 "vkGetDeviceGroupSurfacePresentModesKHR": { 20932 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 20933 { 20934 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-device-parameter", 20935 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 20936 }, 20937 { 20938 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-parameter", 20939 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle" 20940 }, 20941 { 20942 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-pModes-parameter", 20943 "text": " <code>pModes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentModeFlagsKHR\">VkDeviceGroupPresentModeFlagsKHR</a> value" 20944 }, 20945 { 20946 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent", 20947 "text": " Both of <code>device</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 20948 } 20949 ] 20950 }, 20951 "vkGetPhysicalDevicePresentRectanglesKHR": { 20952 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 20953 { 20954 "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter", 20955 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 20956 }, 20957 { 20958 "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter", 20959 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle" 20960 }, 20961 { 20962 "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRectCount-parameter", 20963 "text": " <code>pRectCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 20964 }, 20965 { 20966 "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter", 20967 "text": " If the value referenced by <code>pRectCount</code> is not <code>0</code>, and <code>pRects</code> is not <code>NULL</code>, <code>pRects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pRectCount</code> <code>VkRect2D</code> structures" 20968 }, 20969 { 20970 "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent", 20971 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 20972 } 20973 ] 20974 }, 20975 "vkGetRefreshCycleDurationGOOGLE": { 20976 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [ 20977 { 20978 "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter", 20979 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 20980 }, 20981 { 20982 "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-swapchain-parameter", 20983 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle" 20984 }, 20985 { 20986 "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-pDisplayTimingProperties-parameter", 20987 "text": " <code>pDisplayTimingProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkRefreshCycleDurationGOOGLE</code> structure" 20988 }, 20989 { 20990 "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-commonparent", 20991 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 20992 } 20993 ] 20994 }, 20995 "vkGetPastPresentationTimingGOOGLE": { 20996 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [ 20997 { 20998 "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-device-parameter", 20999 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 21000 }, 21001 { 21002 "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-swapchain-parameter", 21003 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle" 21004 }, 21005 { 21006 "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimingCount-parameter", 21007 "text": " <code>pPresentationTimingCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 21008 }, 21009 { 21010 "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimings-parameter", 21011 "text": " If the value referenced by <code>pPresentationTimingCount</code> is not <code>0</code>, and <code>pPresentationTimings</code> is not <code>NULL</code>, <code>pPresentationTimings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPresentationTimingCount</code> <code>VkPastPresentationTimingGOOGLE</code> structures" 21012 }, 21013 { 21014 "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-commonparent", 21015 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 21016 } 21017 ] 21018 }, 21019 "vkGetSwapchainStatusKHR": { 21020 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [ 21021 { 21022 "vuid": "VUID-vkGetSwapchainStatusKHR-device-parameter", 21023 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 21024 }, 21025 { 21026 "vuid": "VUID-vkGetSwapchainStatusKHR-swapchain-parameter", 21027 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle" 21028 }, 21029 { 21030 "vuid": "VUID-vkGetSwapchainStatusKHR-commonparent", 21031 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 21032 } 21033 ] 21034 }, 21035 "vkCreateSwapchainKHR": { 21036 "(VK_KHR_surface)+(VK_KHR_swapchain)": [ 21037 { 21038 "vuid": "VUID-vkCreateSwapchainKHR-device-parameter", 21039 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 21040 }, 21041 { 21042 "vuid": "VUID-vkCreateSwapchainKHR-pCreateInfo-parameter", 21043 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSwapchainCreateInfoKHR</code> structure" 21044 }, 21045 { 21046 "vuid": "VUID-vkCreateSwapchainKHR-pAllocator-parameter", 21047 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 21048 }, 21049 { 21050 "vuid": "VUID-vkCreateSwapchainKHR-pSwapchain-parameter", 21051 "text": " <code>pSwapchain</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSwapchainKHR</code> handle" 21052 } 21053 ] 21054 }, 21055 "VkSwapchainCreateInfoKHR": { 21056 "(VK_KHR_surface)+(VK_KHR_swapchain)": [ 21057 { 21058 "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-01270", 21059 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a surface that is supported by the device as determined using <code>vkGetPhysicalDeviceSurfaceSupportKHR</code>" 21060 }, 21061 { 21062 "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01271", 21063 "text": " <code>minImageCount</code> <strong class=\"purple\">must</strong> be greater than or equal to the value returned in the <code>minImageCount</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface" 21064 }, 21065 { 21066 "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01272", 21067 "text": " <code>minImageCount</code> <strong class=\"purple\">must</strong> be less than or equal to the value returned in the <code>maxImageCount</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface if the returned <code>maxImageCount</code> is not zero" 21068 }, 21069 { 21070 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01273", 21071 "text": " <code>imageFormat</code> and <code>imageColorSpace</code> <strong class=\"purple\">must</strong> match the <code>format</code> and <code>colorSpace</code> members, respectively, of one of the <code>VkSurfaceFormatKHR</code> structures returned by <code>vkGetPhysicalDeviceSurfaceFormatsKHR</code> for the surface" 21072 }, 21073 { 21074 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01274", 21075 "text": " <code>imageExtent</code> <strong class=\"purple\">must</strong> be between <code>minImageExtent</code> and <code>maxImageExtent</code>, inclusive, where <code>minImageExtent</code> and <code>maxImageExtent</code> are members of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface" 21076 }, 21077 { 21078 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01689", 21079 "text": " <code>imageExtent</code> members <code>width</code> and <code>height</code> <strong class=\"purple\">must</strong> both be non-zero" 21080 }, 21081 { 21082 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275", 21083 "text": " <code>imageArrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and less than or equal to the <code>maxImageArrayLayers</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface" 21084 }, 21085 { 21086 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277", 21087 "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values" 21088 }, 21089 { 21090 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278", 21091 "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>" 21092 }, 21093 { 21094 "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-01279", 21095 "text": " <code>preTransform</code> <strong class=\"purple\">must</strong> be one of the bits present in the <code>supportedTransforms</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface" 21096 }, 21097 { 21098 "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-01280", 21099 "text": " <code>compositeAlpha</code> <strong class=\"purple\">must</strong> be one of the bits present in the <code>supportedCompositeAlpha</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface" 21100 }, 21101 { 21102 "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01281", 21103 "text": " <code>presentMode</code> <strong class=\"purple\">must</strong> be one of the <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values returned by <code>vkGetPhysicalDeviceSurfacePresentModesKHR</code> for the surface" 21104 }, 21105 { 21106 "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933", 21107 "text": " If <code>oldSwapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>oldSwapchain</code> <strong class=\"purple\">must</strong> be a non-retired swapchain associated with native window referred to by <code>surface</code>" 21108 }, 21109 { 21110 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01778", 21111 "text": " The <a href=\"#swapchain-wsi-image-create-info\">implied image creation parameters</a> of the swapchain <strong class=\"purple\">must</strong> be supported as reported by <a href=\"#vkGetPhysicalDeviceImageFormatProperties\">vkGetPhysicalDeviceImageFormatProperties</a>" 21112 }, 21113 { 21114 "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-sType", 21115 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR</code>" 21116 }, 21117 { 21118 "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-pNext", 21119 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupSwapchainCreateInfoKHR\">VkDeviceGroupSwapchainCreateInfoKHR</a>, <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a>, or <a href=\"#VkSwapchainCounterCreateInfoEXT\">VkSwapchainCounterCreateInfoEXT</a>" 21120 }, 21121 { 21122 "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-unique", 21123 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 21124 }, 21125 { 21126 "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-parameter", 21127 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSwapchainCreateFlagBitsKHR\">VkSwapchainCreateFlagBitsKHR</a> values" 21128 }, 21129 { 21130 "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-parameter", 21131 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle" 21132 }, 21133 { 21134 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter", 21135 "text": " <code>imageFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 21136 }, 21137 { 21138 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter", 21139 "text": " <code>imageColorSpace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkColorSpaceKHR\">VkColorSpaceKHR</a> value" 21140 }, 21141 { 21142 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter", 21143 "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 21144 }, 21145 { 21146 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask", 21147 "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 21148 }, 21149 { 21150 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter", 21151 "text": " <code>imageSharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value" 21152 }, 21153 { 21154 "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-parameter", 21155 "text": " <code>preTransform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value" 21156 }, 21157 { 21158 "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter", 21159 "text": " <code>compositeAlpha</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompositeAlphaFlagBitsKHR\">VkCompositeAlphaFlagBitsKHR</a> value" 21160 }, 21161 { 21162 "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-parameter", 21163 "text": " <code>presentMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> value" 21164 }, 21165 { 21166 "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parameter", 21167 "text": " If <code>oldSwapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>oldSwapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle" 21168 }, 21169 { 21170 "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parent", 21171 "text": " If <code>oldSwapchain</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>surface</code>" 21172 }, 21173 { 21174 "vuid": "VUID-VkSwapchainCreateInfoKHR-commonparent", 21175 "text": " Both of <code>oldSwapchain</code>, and <code>surface</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 21176 } 21177 ], 21178 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [ 21179 { 21180 "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01383", 21181 "text": " <code>minImageCount</code> <strong class=\"purple\">must</strong> be <code>1</code> if <code>presentMode</code> is either <code>VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR</code> or <code>VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR</code>" 21182 }, 21183 { 21184 "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01427", 21185 "text": " If <code>presentMode</code> is <code>VK_PRESENT_MODE_IMMEDIATE_KHR</code>, <code>VK_PRESENT_MODE_MAILBOX_KHR</code>, <code>VK_PRESENT_MODE_FIFO_KHR</code> or <code>VK_PRESENT_MODE_FIFO_RELAXED_KHR</code>, <code>imageUsage</code> <strong class=\"purple\">must</strong> be a subset of the supported usage flags present in the <code>supportedUsageFlags</code> member of the <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilitiesKHR\">vkGetPhysicalDeviceSurfaceCapabilitiesKHR</a> for <code>surface</code>" 21186 }, 21187 { 21188 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01384", 21189 "text": " If <code>presentMode</code> is <code>VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR</code> or <code>VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR</code>, <code>imageUsage</code> <strong class=\"purple\">must</strong> be a subset of the supported usage flags present in the <code>sharedPresentSupportedUsageFlags</code> member of the <a href=\"#VkSharedPresentSurfaceCapabilitiesKHR\">VkSharedPresentSurfaceCapabilitiesKHR</a> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> for <code>surface</code>" 21190 } 21191 ], 21192 "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [ 21193 { 21194 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01276", 21195 "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> be a subset of the supported usage flags present in the <code>supportedUsageFlags</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface" 21196 } 21197 ], 21198 "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 21199 { 21200 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01393", 21201 "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>" 21202 } 21203 ], 21204 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 21205 { 21206 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428", 21207 "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>" 21208 } 21209 ], 21210 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 21211 { 21212 "vuid": "VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429", 21213 "text": " If the logical device was created with <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>::<code>physicalDeviceCount</code> equal to 1, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR</code>" 21214 } 21215 ], 21216 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_swapchain_mutable_format)": [ 21217 { 21218 "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03168", 21219 "text": " If <code>flags</code> contains <code>VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR</code> then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a> with a <code>viewFormatCount</code> greater than zero and <code>pViewFormats</code> <strong class=\"purple\">must</strong> have an element equal to <code>imageFormat</code>" 21220 } 21221 ] 21222 }, 21223 "VkDeviceGroupSwapchainCreateInfoKHR": { 21224 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 21225 { 21226 "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-sType-sType", 21227 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR</code>" 21228 }, 21229 { 21230 "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter", 21231 "text": " <code>modes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> values" 21232 }, 21233 { 21234 "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask", 21235 "text": " <code>modes</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 21236 } 21237 ] 21238 }, 21239 "VkSwapchainCounterCreateInfoEXT": { 21240 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [ 21241 { 21242 "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244", 21243 "text": " The bits in <code>surfaceCounters</code> <strong class=\"purple\">must</strong> be supported by <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>surface</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2EXT\">vkGetPhysicalDeviceSurfaceCapabilities2EXT</a>." 21244 }, 21245 { 21246 "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-sType-sType", 21247 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT</code>" 21248 }, 21249 { 21250 "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-parameter", 21251 "text": " <code>surfaceCounters</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> values" 21252 } 21253 ] 21254 }, 21255 "vkGetSwapchainCounterEXT": { 21256 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [ 21257 { 21258 "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-01245", 21259 "text": " One or more present commands on <code>swapchain</code> <strong class=\"purple\">must</strong> have been processed by the presentation engine." 21260 }, 21261 { 21262 "vuid": "VUID-vkGetSwapchainCounterEXT-device-parameter", 21263 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 21264 }, 21265 { 21266 "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-parameter", 21267 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle" 21268 }, 21269 { 21270 "vuid": "VUID-vkGetSwapchainCounterEXT-counter-parameter", 21271 "text": " <code>counter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> value" 21272 }, 21273 { 21274 "vuid": "VUID-vkGetSwapchainCounterEXT-pCounterValue-parameter", 21275 "text": " <code>pCounterValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value" 21276 }, 21277 { 21278 "vuid": "VUID-vkGetSwapchainCounterEXT-commonparent", 21279 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 21280 } 21281 ] 21282 }, 21283 "vkDestroySwapchainKHR": { 21284 "(VK_KHR_surface)+(VK_KHR_swapchain)": [ 21285 { 21286 "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01282", 21287 "text": " All uses of presentable images acquired from <code>swapchain</code> <strong class=\"purple\">must</strong> have completed execution" 21288 }, 21289 { 21290 "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01283", 21291 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>swapchain</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 21292 }, 21293 { 21294 "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01284", 21295 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>swapchain</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 21296 }, 21297 { 21298 "vuid": "VUID-vkDestroySwapchainKHR-device-parameter", 21299 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 21300 }, 21301 { 21302 "vuid": "VUID-vkDestroySwapchainKHR-swapchain-parameter", 21303 "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle" 21304 }, 21305 { 21306 "vuid": "VUID-vkDestroySwapchainKHR-pAllocator-parameter", 21307 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 21308 }, 21309 { 21310 "vuid": "VUID-vkDestroySwapchainKHR-commonparent", 21311 "text": " Both of <code>device</code>, and <code>swapchain</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 21312 } 21313 ] 21314 }, 21315 "vkCreateSharedSwapchainsKHR": { 21316 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [ 21317 { 21318 "vuid": "VUID-vkCreateSharedSwapchainsKHR-device-parameter", 21319 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 21320 }, 21321 { 21322 "vuid": "VUID-vkCreateSharedSwapchainsKHR-pCreateInfos-parameter", 21323 "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkSwapchainCreateInfoKHR</code> structures" 21324 }, 21325 { 21326 "vuid": "VUID-vkCreateSharedSwapchainsKHR-pAllocator-parameter", 21327 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 21328 }, 21329 { 21330 "vuid": "VUID-vkCreateSharedSwapchainsKHR-pSwapchains-parameter", 21331 "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>VkSwapchainKHR</code> handles" 21332 }, 21333 { 21334 "vuid": "VUID-vkCreateSharedSwapchainsKHR-swapchainCount-arraylength", 21335 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 21336 } 21337 ] 21338 }, 21339 "vkGetSwapchainImagesKHR": { 21340 "(VK_KHR_surface)+(VK_KHR_swapchain)": [ 21341 { 21342 "vuid": "VUID-vkGetSwapchainImagesKHR-device-parameter", 21343 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 21344 }, 21345 { 21346 "vuid": "VUID-vkGetSwapchainImagesKHR-swapchain-parameter", 21347 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle" 21348 }, 21349 { 21350 "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImageCount-parameter", 21351 "text": " <code>pSwapchainImageCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 21352 }, 21353 { 21354 "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImages-parameter", 21355 "text": " If the value referenced by <code>pSwapchainImageCount</code> is not <code>0</code>, and <code>pSwapchainImages</code> is not <code>NULL</code>, <code>pSwapchainImages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSwapchainImageCount</code> <code>VkImage</code> handles" 21356 }, 21357 { 21358 "vuid": "VUID-vkGetSwapchainImagesKHR-commonparent", 21359 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 21360 } 21361 ] 21362 }, 21363 "vkAcquireNextImageKHR": { 21364 "(VK_KHR_surface)+(VK_KHR_swapchain)": [ 21365 { 21366 "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01285", 21367 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state" 21368 }, 21369 { 21370 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01286", 21371 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled" 21372 }, 21373 { 21374 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01779", 21375 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> not have any uncompleted signal or wait operations pending" 21376 }, 21377 { 21378 "vuid": "VUID-vkAcquireNextImageKHR-fence-01287", 21379 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled and <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue" 21380 }, 21381 { 21382 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01780", 21383 "text": " <code>semaphore</code> and <code>fence</code> <strong class=\"purple\">must</strong> not both be equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 21384 }, 21385 { 21386 "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01802", 21387 "text": " If the number of currently acquired images is greater than the difference between the number of images in <code>swapchain</code> and the value of <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a>::<code>minImageCount</code> as returned by a call to <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> with the <code>surface</code> used to create <code>swapchain</code>, <code>timeout</code> <strong class=\"purple\">must</strong> not be <code>UINT64_MAX</code>" 21388 }, 21389 { 21390 "vuid": "VUID-vkAcquireNextImageKHR-device-parameter", 21391 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 21392 }, 21393 { 21394 "vuid": "VUID-vkAcquireNextImageKHR-swapchain-parameter", 21395 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle" 21396 }, 21397 { 21398 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parameter", 21399 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle" 21400 }, 21401 { 21402 "vuid": "VUID-vkAcquireNextImageKHR-fence-parameter", 21403 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle" 21404 }, 21405 { 21406 "vuid": "VUID-vkAcquireNextImageKHR-pImageIndex-parameter", 21407 "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 21408 }, 21409 { 21410 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parent", 21411 "text": " If <code>semaphore</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 21412 }, 21413 { 21414 "vuid": "VUID-vkAcquireNextImageKHR-fence-parent", 21415 "text": " If <code>fence</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 21416 }, 21417 { 21418 "vuid": "VUID-vkAcquireNextImageKHR-commonparent", 21419 "text": " Both of <code>device</code>, and <code>swapchain</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 21420 } 21421 ] 21422 }, 21423 "vkAcquireNextImage2KHR": { 21424 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 21425 { 21426 "vuid": "VUID-vkAcquireNextImage2KHR-swapchain-01803", 21427 "text": " If the number of currently acquired images is greater than the difference between the number of images in the <code>swapchain</code> member of <code>pAcquireInfo</code> and the value of <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a>::<code>minImageCount</code> as returned by a call to <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> with the <code>surface</code> used to create <code>swapchain</code>, the <code>timeout</code> member of <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> not be <code>UINT64_MAX</code>" 21428 }, 21429 { 21430 "vuid": "VUID-vkAcquireNextImage2KHR-device-parameter", 21431 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 21432 }, 21433 { 21434 "vuid": "VUID-vkAcquireNextImage2KHR-pAcquireInfo-parameter", 21435 "text": " <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAcquireNextImageInfoKHR</code> structure" 21436 }, 21437 { 21438 "vuid": "VUID-vkAcquireNextImage2KHR-pImageIndex-parameter", 21439 "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 21440 } 21441 ] 21442 }, 21443 "VkAcquireNextImageInfoKHR": { 21444 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 21445 { 21446 "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-01675", 21447 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state" 21448 }, 21449 { 21450 "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01288", 21451 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled" 21452 }, 21453 { 21454 "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01781", 21455 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> not have any uncompleted signal or wait operations pending" 21456 }, 21457 { 21458 "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-01289", 21459 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled and <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue" 21460 }, 21461 { 21462 "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01782", 21463 "text": " <code>semaphore</code> and <code>fence</code> <strong class=\"purple\">must</strong> not both be equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 21464 }, 21465 { 21466 "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01290", 21467 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask" 21468 }, 21469 { 21470 "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01291", 21471 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero" 21472 }, 21473 { 21474 "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01804", 21475 "text": " <code>semaphore</code> and <code>fence</code> <strong class=\"purple\">must</strong> not both be equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>." 21476 }, 21477 { 21478 "vuid": "VUID-VkAcquireNextImageInfoKHR-sType-sType", 21479 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR</code>" 21480 }, 21481 { 21482 "vuid": "VUID-VkAcquireNextImageInfoKHR-pNext-pNext", 21483 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 21484 }, 21485 { 21486 "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-parameter", 21487 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle" 21488 }, 21489 { 21490 "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-parameter", 21491 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle" 21492 }, 21493 { 21494 "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-parameter", 21495 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle" 21496 }, 21497 { 21498 "vuid": "VUID-VkAcquireNextImageInfoKHR-commonparent", 21499 "text": " Each of <code>fence</code>, <code>semaphore</code>, and <code>swapchain</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 21500 } 21501 ] 21502 }, 21503 "vkQueuePresentKHR": { 21504 "(VK_KHR_surface)+(VK_KHR_swapchain)": [ 21505 { 21506 "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01292", 21507 "text": " Each element of <code>pSwapchains</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be a swapchain that is created for a surface for which presentation is supported from <code>queue</code> as determined using a call to <code>vkGetPhysicalDeviceSurfaceSupportKHR</code>" 21508 }, 21509 { 21510 "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01294", 21511 "text": " When a semaphore unsignal operation defined by the elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> executes on <code>queue</code>, no other queue <strong class=\"purple\">must</strong> be waiting on the same semaphore." 21512 }, 21513 { 21514 "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01295", 21515 "text": " All elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> previously submitted for execution." 21516 }, 21517 { 21518 "vuid": "VUID-vkQueuePresentKHR-queue-parameter", 21519 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle" 21520 }, 21521 { 21522 "vuid": "VUID-vkQueuePresentKHR-pPresentInfo-parameter", 21523 "text": " <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPresentInfoKHR</code> structure" 21524 } 21525 ], 21526 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [ 21527 { 21528 "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01293", 21529 "text": " If more than one member of <code>pSwapchains</code> was created from a display surface, all display surfaces referenced that refer to the same display <strong class=\"purple\">must</strong> use the same display mode" 21530 } 21531 ] 21532 }, 21533 "VkPresentInfoKHR": { 21534 "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [ 21535 { 21536 "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01296", 21537 "text": " Each element of <code>pImageIndices</code> <strong class=\"purple\">must</strong> be the index of a presentable image acquired from the swapchain specified by the corresponding element of the <code>pSwapchains</code> array, and the presented image subresource <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code> layout at the time the operation is executed on a <code>VkDevice</code>" 21538 } 21539 ], 21540 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [ 21541 { 21542 "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01430", 21543 "text": " Each element of <code>pImageIndices</code> <strong class=\"purple\">must</strong> be the index of a presentable image acquired from the swapchain specified by the corresponding element of the <code>pSwapchains</code> array, and the presented image subresource <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code> or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code> layout at the time the operation is executed on a <code>VkDevice</code>" 21544 } 21545 ], 21546 "(VK_KHR_surface)+(VK_KHR_swapchain)": [ 21547 { 21548 "vuid": "VUID-VkPresentInfoKHR-sType-sType", 21549 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_INFO_KHR</code>" 21550 }, 21551 { 21552 "vuid": "VUID-VkPresentInfoKHR-pNext-pNext", 21553 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupPresentInfoKHR\">VkDeviceGroupPresentInfoKHR</a>, <a href=\"#VkDisplayPresentInfoKHR\">VkDisplayPresentInfoKHR</a>, <a href=\"#VkPresentRegionsKHR\">VkPresentRegionsKHR</a>, or <a href=\"#VkPresentTimesInfoGOOGLE\">VkPresentTimesInfoGOOGLE</a>" 21554 }, 21555 { 21556 "vuid": "VUID-VkPresentInfoKHR-sType-unique", 21557 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 21558 }, 21559 { 21560 "vuid": "VUID-VkPresentInfoKHR-pWaitSemaphores-parameter", 21561 "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <code>VkSemaphore</code> handles" 21562 }, 21563 { 21564 "vuid": "VUID-VkPresentInfoKHR-pSwapchains-parameter", 21565 "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkSwapchainKHR</code> handles" 21566 }, 21567 { 21568 "vuid": "VUID-VkPresentInfoKHR-pImageIndices-parameter", 21569 "text": " <code>pImageIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>uint32_t</code> values" 21570 }, 21571 { 21572 "vuid": "VUID-VkPresentInfoKHR-pResults-parameter", 21573 "text": " If <code>pResults</code> is not <code>NULL</code>, <code>pResults</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <a href=\"#VkResult\">VkResult</a> values" 21574 }, 21575 { 21576 "vuid": "VUID-VkPresentInfoKHR-swapchainCount-arraylength", 21577 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 21578 }, 21579 { 21580 "vuid": "VUID-VkPresentInfoKHR-commonparent", 21581 "text": " Both of the elements of <code>pSwapchains</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 21582 } 21583 ] 21584 }, 21585 "VkPresentRegionsKHR": { 21586 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [ 21587 { 21588 "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-01260", 21589 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkPresentInfoKHR</code>::<code>swapchainCount</code>, where <code>VkPresentInfoKHR</code> is in the <code>pNext</code> chain of this <code>VkPresentRegionsKHR</code> structure" 21590 }, 21591 { 21592 "vuid": "VUID-VkPresentRegionsKHR-sType-sType", 21593 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR</code>" 21594 }, 21595 { 21596 "vuid": "VUID-VkPresentRegionsKHR-pRegions-parameter", 21597 "text": " If <code>pRegions</code> is not <code>NULL</code>, <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkPresentRegionKHR</code> structures" 21598 }, 21599 { 21600 "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-arraylength", 21601 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 21602 } 21603 ] 21604 }, 21605 "VkPresentRegionKHR": { 21606 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [ 21607 { 21608 "vuid": "VUID-VkPresentRegionKHR-pRectangles-parameter", 21609 "text": " If <code>rectangleCount</code> is not <code>0</code>, and <code>pRectangles</code> is not <code>NULL</code>, <code>pRectangles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rectangleCount</code> valid <code>VkRectLayerKHR</code> structures" 21610 } 21611 ] 21612 }, 21613 "VkRectLayerKHR": { 21614 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [ 21615 { 21616 "vuid": "VUID-VkRectLayerKHR-offset-01261", 21617 "text": " The sum of <code>offset</code> and <code>extent</code> <strong class=\"purple\">must</strong> be no greater than the <code>imageExtent</code> member of the <code>VkSwapchainCreateInfoKHR</code> structure given to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>." 21618 }, 21619 { 21620 "vuid": "VUID-VkRectLayerKHR-layer-01262", 21621 "text": " <code>layer</code> <strong class=\"purple\">must</strong> be less than <code>imageArrayLayers</code> member of the <code>VkSwapchainCreateInfoKHR</code> structure given to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>." 21622 } 21623 ] 21624 }, 21625 "VkDisplayPresentInfoKHR": { 21626 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [ 21627 { 21628 "vuid": "VUID-VkDisplayPresentInfoKHR-srcRect-01257", 21629 "text": " <code>srcRect</code> <strong class=\"purple\">must</strong> specify a rectangular region that is a subset of the image being presented" 21630 }, 21631 { 21632 "vuid": "VUID-VkDisplayPresentInfoKHR-dstRect-01258", 21633 "text": " <code>dstRect</code> <strong class=\"purple\">must</strong> specify a rectangular region that is a subset of the <code>visibleRegion</code> parameter of the display mode the swapchain being presented uses" 21634 }, 21635 { 21636 "vuid": "VUID-VkDisplayPresentInfoKHR-persistentContent-01259", 21637 "text": " If the <code>persistentContent</code> member of the <code>VkDisplayPropertiesKHR</code> structure returned by <code>vkGetPhysicalDeviceDisplayPropertiesKHR</code> for the display the present operation targets then <code>persistent</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 21638 }, 21639 { 21640 "vuid": "VUID-VkDisplayPresentInfoKHR-sType-sType", 21641 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR</code>" 21642 } 21643 ] 21644 }, 21645 "VkDeviceGroupPresentInfoKHR": { 21646 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 21647 { 21648 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-swapchainCount-01297", 21649 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> equal <code>0</code> or <a href=\"#VkPresentInfoKHR\">VkPresentInfoKHR</a>::<code>swapchainCount</code>" 21650 }, 21651 { 21652 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01298", 21653 "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR</code>, then each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> have exactly one bit set, and the corresponding element of <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code> <strong class=\"purple\">must</strong> be non-zero" 21654 }, 21655 { 21656 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01299", 21657 "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR</code>, then each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> have exactly one bit set, and some physical device in the logical device <strong class=\"purple\">must</strong> include that bit in its <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code>." 21658 }, 21659 { 21660 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01300", 21661 "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR</code>, then each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> have a value for which all set bits are set in one of the elements of <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code>" 21662 }, 21663 { 21664 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01301", 21665 "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR</code>, then for each bit set in each element of <code>pDeviceMasks</code>, the corresponding element of <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code> <strong class=\"purple\">must</strong> be non-zero" 21666 }, 21667 { 21668 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-01302", 21669 "text": " The value of each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> be equal to the device mask passed in <a href=\"#VkAcquireNextImageInfoKHR\">VkAcquireNextImageInfoKHR</a>::<code>deviceMask</code> when the image index was last acquired" 21670 }, 21671 { 21672 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01303", 21673 "text": " <code>mode</code> <strong class=\"purple\">must</strong> have exactly one bit set, and that bit <strong class=\"purple\">must</strong> have been included in <a href=\"#VkDeviceGroupSwapchainCreateInfoKHR\">VkDeviceGroupSwapchainCreateInfoKHR</a>::<code>modes</code>" 21674 }, 21675 { 21676 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-sType-sType", 21677 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR</code>" 21678 }, 21679 { 21680 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter", 21681 "text": " If <code>swapchainCount</code> is not <code>0</code>, <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>uint32_t</code> values" 21682 }, 21683 { 21684 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-parameter", 21685 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> value" 21686 } 21687 ] 21688 }, 21689 "VkPresentTimesInfoGOOGLE": { 21690 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [ 21691 { 21692 "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-01247", 21693 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkPresentInfoKHR</code>::<code>swapchainCount</code>, where <code>VkPresentInfoKHR</code> is in the <code>pNext</code> chain of this <code>VkPresentTimesInfoGOOGLE</code> structure." 21694 }, 21695 { 21696 "vuid": "VUID-VkPresentTimesInfoGOOGLE-sType-sType", 21697 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE</code>" 21698 }, 21699 { 21700 "vuid": "VUID-VkPresentTimesInfoGOOGLE-pTimes-parameter", 21701 "text": " If <code>pTimes</code> is not <code>NULL</code>, <code>pTimes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>VkPresentTimeGOOGLE</code> structures" 21702 }, 21703 { 21704 "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-arraylength", 21705 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 21706 } 21707 ] 21708 }, 21709 "vkSetHdrMetadataEXT": { 21710 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [ 21711 { 21712 "vuid": "VUID-vkSetHdrMetadataEXT-device-parameter", 21713 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 21714 }, 21715 { 21716 "vuid": "VUID-vkSetHdrMetadataEXT-pSwapchains-parameter", 21717 "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkSwapchainKHR</code> handles" 21718 }, 21719 { 21720 "vuid": "VUID-vkSetHdrMetadataEXT-pMetadata-parameter", 21721 "text": " <code>pMetadata</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkHdrMetadataEXT</code> structures" 21722 }, 21723 { 21724 "vuid": "VUID-vkSetHdrMetadataEXT-swapchainCount-arraylength", 21725 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 21726 }, 21727 { 21728 "vuid": "VUID-vkSetHdrMetadataEXT-commonparent", 21729 "text": " Both of <code>device</code>, and the elements of <code>pSwapchains</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>" 21730 } 21731 ] 21732 }, 21733 "VkHdrMetadataEXT": { 21734 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [ 21735 { 21736 "vuid": "VUID-VkHdrMetadataEXT-sType-sType", 21737 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_HDR_METADATA_EXT</code>" 21738 }, 21739 { 21740 "vuid": "VUID-VkHdrMetadataEXT-pNext-pNext", 21741 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 21742 } 21743 ] 21744 }, 21745 "vkCmdTraceRaysNV": { 21746 "(VK_NV_ray_tracing)": [ 21747 { 21748 "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455", 21749 "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>raygenShaderBindingTableBuffer</code>" 21750 }, 21751 { 21752 "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456", 21753 "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>" 21754 }, 21755 { 21756 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457", 21757 "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>missShaderBindingTableBuffer</code>" 21758 }, 21759 { 21760 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458", 21761 "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>" 21762 }, 21763 { 21764 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459", 21765 "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>hitShaderBindingTableBuffer</code>" 21766 }, 21767 { 21768 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460", 21769 "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>" 21770 }, 21771 { 21772 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461", 21773 "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>callableShaderBindingTableBuffer</code>" 21774 }, 21775 { 21776 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462", 21777 "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>" 21778 }, 21779 { 21780 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463", 21781 "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>" 21782 }, 21783 { 21784 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464", 21785 "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>" 21786 }, 21787 { 21788 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465", 21789 "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>" 21790 }, 21791 { 21792 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466", 21793 "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be a less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>" 21794 }, 21795 { 21796 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467", 21797 "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be a less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>" 21798 }, 21799 { 21800 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468", 21801 "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be a less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>" 21802 }, 21803 { 21804 "vuid": "VUID-vkCmdTraceRaysNV-width-02469", 21805 "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]" 21806 }, 21807 { 21808 "vuid": "VUID-vkCmdTraceRaysNV-height-02470", 21809 "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]" 21810 }, 21811 { 21812 "vuid": "VUID-vkCmdTraceRaysNV-depth-02471", 21813 "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]" 21814 }, 21815 { 21816 "vuid": "VUID-vkCmdTraceRaysNV-None-02472", 21817 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 21818 }, 21819 { 21820 "vuid": "VUID-vkCmdTraceRaysNV-None-02473", 21821 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>" 21822 }, 21823 { 21824 "vuid": "VUID-vkCmdTraceRaysNV-None-02474", 21825 "text": " A valid ray tracing pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>" 21826 }, 21827 { 21828 "vuid": "VUID-vkCmdTraceRaysNV-None-02475", 21829 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants with the one used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 21830 }, 21831 { 21832 "vuid": "VUID-vkCmdTraceRaysNV-None-02476", 21833 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 21834 }, 21835 { 21836 "vuid": "VUID-vkCmdTraceRaysNV-None-02477", 21837 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 21838 }, 21839 { 21840 "vuid": "VUID-vkCmdTraceRaysNV-None-02478", 21841 "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 21842 }, 21843 { 21844 "vuid": "VUID-vkCmdTraceRaysNV-None-02479", 21845 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 21846 }, 21847 { 21848 "vuid": "VUID-vkCmdTraceRaysNV-None-02480", 21849 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set" 21850 }, 21851 { 21852 "vuid": "VUID-vkCmdTraceRaysNV-None-02481", 21853 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 21854 }, 21855 { 21856 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-parameter", 21857 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 21858 }, 21859 { 21860 "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter", 21861 "text": " <code>raygenShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 21862 }, 21863 { 21864 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter", 21865 "text": " If <code>missShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>missShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 21866 }, 21867 { 21868 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter", 21869 "text": " If <code>hitShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>hitShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 21870 }, 21871 { 21872 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter", 21873 "text": " If <code>callableShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>callableShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 21874 }, 21875 { 21876 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-recording", 21877 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 21878 }, 21879 { 21880 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-cmdpool", 21881 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 21882 }, 21883 { 21884 "vuid": "VUID-vkCmdTraceRaysNV-commonparent", 21885 "text": " Each of <code>callableShaderBindingTableBuffer</code>, <code>commandBuffer</code>, <code>hitShaderBindingTableBuffer</code>, <code>missShaderBindingTableBuffer</code>, and <code>raygenShaderBindingTableBuffer</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 21886 } 21887 ], 21888 "(VK_NV_ray_tracing)+(VK_IMG_filter_cubic)": [ 21889 { 21890 "vuid": "VUID-vkCmdTraceRaysNV-None-02482", 21891 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code>" 21892 }, 21893 { 21894 "vuid": "VUID-vkCmdTraceRaysNV-None-02483", 21895 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 21896 } 21897 ], 21898 "(VK_NV_ray_tracing)+(VK_VERSION_1_1)": [ 21899 { 21900 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02484", 21901 "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer" 21902 }, 21903 { 21904 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02485", 21905 "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer" 21906 }, 21907 { 21908 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02486", 21909 "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the ray tracing pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> reads from any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer" 21910 } 21911 ], 21912 "(VK_NV_ray_tracing)+(VK_NV_corner_sampled_image)": [ 21913 { 21914 "vuid": "VUID-vkCmdTraceRaysNV-flags-02487", 21915 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 21916 } 21917 ] 21918 }, 21919 "vkCmdBuildAccelerationStructureNV": { 21920 "(VK_NV_ray_tracing)": [ 21921 { 21922 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241", 21923 "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>" 21924 }, 21925 { 21926 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-02488", 21927 "text": " <code>dst</code> <strong class=\"purple\">must</strong> have been created with compatible <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> where <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>:::<code>type</code> and <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>flags</code> are identical, <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>instanceCount</code> and <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>geometryCount</code> for <code>dst</code> are greater than or equal to the build size and each geometry in <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>pGeometries</code> for <code>dst</code> has greater than or equal to the number of vertices, indices, and AABBs." 21928 }, 21929 { 21930 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02489", 21931 "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>src</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 21932 }, 21933 { 21934 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02490", 21935 "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>src</code> <strong class=\"purple\">must</strong> have been built before with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV</code> set in <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>flags</code>" 21936 }, 21937 { 21938 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02491", 21939 "text": " If <code>update</code> is <code>VK_FALSE</code>, The <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>accelerationStructure</code> set to <code>dst</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>scratch</code> minus <code>scratchOffset</code>" 21940 }, 21941 { 21942 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02492", 21943 "text": " If <code>update</code> is <code>VK_TRUE</code>, The <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>accelerationStructure</code> set to <code>dst</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>scratch</code> minus <code>scratchOffset</code>" 21944 }, 21945 { 21946 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter", 21947 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 21948 }, 21949 { 21950 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter", 21951 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAccelerationStructureInfoNV</code> structure" 21952 }, 21953 { 21954 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter", 21955 "text": " If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 21956 }, 21957 { 21958 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-parameter", 21959 "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle" 21960 }, 21961 { 21962 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-src-parameter", 21963 "text": " If <code>src</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>src</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle" 21964 }, 21965 { 21966 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter", 21967 "text": " <code>scratch</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" 21968 }, 21969 { 21970 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording", 21971 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 21972 }, 21973 { 21974 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool", 21975 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 21976 }, 21977 { 21978 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commonparent", 21979 "text": " Each of <code>commandBuffer</code>, <code>dst</code>, <code>instanceData</code>, <code>scratch</code>, and <code>src</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 21980 } 21981 ] 21982 }, 21983 "vkCmdWriteAccelerationStructuresPropertiesNV": { 21984 "(VK_NV_ray_tracing)": [ 21985 { 21986 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-02242", 21987 "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>" 21988 }, 21989 { 21990 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-02493", 21991 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> matching <code>queryType</code>" 21992 }, 21993 { 21994 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-02494", 21995 "text": " The queries identified by <code>queryPool</code> and <code>firstQuery</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>" 21996 }, 21997 { 21998 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructures-02495", 21999 "text": " All acceleration structures in <code>accelerationStructures</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>" 22000 }, 22001 { 22002 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter", 22003 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 22004 }, 22005 { 22006 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-parameter", 22007 "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <code>VkAccelerationStructureNV</code> handles" 22008 }, 22009 { 22010 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-parameter", 22011 "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value" 22012 }, 22013 { 22014 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-parameter", 22015 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle" 22016 }, 22017 { 22018 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-recording", 22019 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 22020 }, 22021 { 22022 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-cmdpool", 22023 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 22024 }, 22025 { 22026 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructureCount-arraylength", 22027 "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 22028 }, 22029 { 22030 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commonparent", 22031 "text": " Each of <code>commandBuffer</code>, <code>queryPool</code>, and the elements of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 22032 } 22033 ] 22034 }, 22035 "vkCmdCopyAccelerationStructureNV": { 22036 "(VK_NV_ray_tracing)": [ 22037 { 22038 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-02496", 22039 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV</code> or <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV</code>" 22040 }, 22041 { 22042 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-02497", 22043 "text": " <code>src</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV</code> if <code>mode</code> is <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV</code>" 22044 }, 22045 { 22046 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter", 22047 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 22048 }, 22049 { 22050 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-dst-parameter", 22051 "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle" 22052 }, 22053 { 22054 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-parameter", 22055 "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle" 22056 }, 22057 { 22058 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-parameter", 22059 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeNV\">VkCopyAccelerationStructureModeNV</a> value" 22060 }, 22061 { 22062 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording", 22063 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 22064 }, 22065 { 22066 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool", 22067 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 22068 }, 22069 { 22070 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commonparent", 22071 "text": " Each of <code>commandBuffer</code>, <code>dst</code>, and <code>src</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" 22072 } 22073 ] 22074 }, 22075 "vkEnumerateInstanceLayerProperties": { 22076 "core": [ 22077 { 22078 "vuid": "VUID-vkEnumerateInstanceLayerProperties-pPropertyCount-parameter", 22079 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 22080 }, 22081 { 22082 "vuid": "VUID-vkEnumerateInstanceLayerProperties-pProperties-parameter", 22083 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkLayerProperties</code> structures" 22084 } 22085 ] 22086 }, 22087 "vkEnumerateDeviceLayerProperties": { 22088 "core": [ 22089 { 22090 "vuid": "VUID-vkEnumerateDeviceLayerProperties-physicalDevice-parameter", 22091 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 22092 }, 22093 { 22094 "vuid": "VUID-vkEnumerateDeviceLayerProperties-pPropertyCount-parameter", 22095 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 22096 }, 22097 { 22098 "vuid": "VUID-vkEnumerateDeviceLayerProperties-pProperties-parameter", 22099 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkLayerProperties</code> structures" 22100 } 22101 ] 22102 }, 22103 "vkEnumerateInstanceExtensionProperties": { 22104 "core": [ 22105 { 22106 "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pLayerName-parameter", 22107 "text": " If <code>pLayerName</code> is not <code>NULL</code>, <code>pLayerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 22108 }, 22109 { 22110 "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pPropertyCount-parameter", 22111 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 22112 }, 22113 { 22114 "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pProperties-parameter", 22115 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkExtensionProperties</code> structures" 22116 } 22117 ] 22118 }, 22119 "vkEnumerateDeviceExtensionProperties": { 22120 "core": [ 22121 { 22122 "vuid": "VUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter", 22123 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 22124 }, 22125 { 22126 "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pLayerName-parameter", 22127 "text": " If <code>pLayerName</code> is not <code>NULL</code>, <code>pLayerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 22128 }, 22129 { 22130 "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pPropertyCount-parameter", 22131 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 22132 }, 22133 { 22134 "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pProperties-parameter", 22135 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkExtensionProperties</code> structures" 22136 } 22137 ] 22138 }, 22139 "vkGetPhysicalDeviceFeatures": { 22140 "core": [ 22141 { 22142 "vuid": "VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter", 22143 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 22144 }, 22145 { 22146 "vuid": "VUID-vkGetPhysicalDeviceFeatures-pFeatures-parameter", 22147 "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceFeatures</code> structure" 22148 } 22149 ] 22150 }, 22151 "vkGetPhysicalDeviceFeatures2": { 22152 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 22153 { 22154 "vuid": "VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter", 22155 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 22156 }, 22157 { 22158 "vuid": "VUID-vkGetPhysicalDeviceFeatures2-pFeatures-parameter", 22159 "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceFeatures2</code> structure" 22160 } 22161 ] 22162 }, 22163 "VkPhysicalDeviceFeatures2": { 22164 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 22165 { 22166 "vuid": "VUID-VkPhysicalDeviceFeatures2-sType-sType", 22167 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2</code>" 22168 } 22169 ] 22170 }, 22171 "VkPhysicalDeviceVariablePointerFeatures": { 22172 "(VK_VERSION_1_1,VK_KHR_variable_pointers)": [ 22173 { 22174 "vuid": "VUID-VkPhysicalDeviceVariablePointerFeatures-variablePointers-01431", 22175 "text": " If <code>variablePointers</code> is enabled then <code>variablePointersStorageBuffer</code> <strong class=\"purple\">must</strong> also be enabled." 22176 }, 22177 { 22178 "vuid": "VUID-VkPhysicalDeviceVariablePointerFeatures-sType-sType", 22179 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES</code>" 22180 } 22181 ] 22182 }, 22183 "VkPhysicalDeviceMultiviewFeatures": { 22184 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 22185 { 22186 "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580", 22187 "text": " If <code>multiviewGeometryShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled." 22188 }, 22189 { 22190 "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581", 22191 "text": " If <code>multiviewTessellationShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled." 22192 }, 22193 { 22194 "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-sType-sType", 22195 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES</code>" 22196 } 22197 ] 22198 }, 22199 "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR": { 22200 "(VK_KHR_shader_atomic_int64)": [ 22201 { 22202 "vuid": "VUID-VkPhysicalDeviceShaderAtomicInt64FeaturesKHR-sType-sType", 22203 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR</code>" 22204 } 22205 ] 22206 }, 22207 "VkPhysicalDevice8BitStorageFeaturesKHR": { 22208 "(VK_KHR_8bit_storage)": [ 22209 { 22210 "vuid": "VUID-VkPhysicalDevice8BitStorageFeaturesKHR-sType-sType", 22211 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR</code>" 22212 } 22213 ] 22214 }, 22215 "VkPhysicalDevice16BitStorageFeatures": { 22216 "(VK_VERSION_1_1,VK_KHR_16bit_storage)": [ 22217 { 22218 "vuid": "VUID-VkPhysicalDevice16BitStorageFeatures-sType-sType", 22219 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES</code>" 22220 } 22221 ] 22222 }, 22223 "VkPhysicalDeviceFloat16Int8FeaturesKHR": { 22224 "(VK_KHR_shader_float16_int8)": [ 22225 { 22226 "vuid": "VUID-VkPhysicalDeviceFloat16Int8FeaturesKHR-sType-sType", 22227 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR</code>" 22228 } 22229 ] 22230 }, 22231 "VkPhysicalDeviceSamplerYcbcrConversionFeatures": { 22232 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 22233 { 22234 "vuid": "VUID-VkPhysicalDeviceSamplerYcbcrConversionFeatures-sType-sType", 22235 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES</code>" 22236 } 22237 ] 22238 }, 22239 "VkPhysicalDeviceProtectedMemoryFeatures": { 22240 "(VK_VERSION_1_1)": [ 22241 { 22242 "vuid": "VUID-VkPhysicalDeviceProtectedMemoryFeatures-sType-sType", 22243 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES</code>" 22244 } 22245 ] 22246 }, 22247 "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT": { 22248 "(VK_EXT_blend_operation_advanced)": [ 22249 { 22250 "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT-sType-sType", 22251 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT</code>" 22252 } 22253 ] 22254 }, 22255 "VkPhysicalDeviceConditionalRenderingFeaturesEXT": { 22256 "(VK_EXT_conditional_rendering)": [ 22257 { 22258 "vuid": "VUID-VkPhysicalDeviceConditionalRenderingFeaturesEXT-sType-sType", 22259 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT</code>" 22260 } 22261 ] 22262 }, 22263 "VkPhysicalDeviceShaderDrawParameterFeatures": { 22264 "(VK_VERSION_1_1)": [ 22265 { 22266 "vuid": "VUID-VkPhysicalDeviceShaderDrawParameterFeatures-sType-sType", 22267 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES</code>" 22268 } 22269 ] 22270 }, 22271 "VkPhysicalDeviceMeshShaderFeaturesNV": { 22272 "(VK_NV_mesh_shader)": [ 22273 { 22274 "vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesNV-sType-sType", 22275 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV</code>" 22276 } 22277 ] 22278 }, 22279 "VkPhysicalDeviceDescriptorIndexingFeaturesEXT": { 22280 "(VK_EXT_descriptor_indexing)": [ 22281 { 22282 "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingFeaturesEXT-sType-sType", 22283 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT</code>" 22284 } 22285 ] 22286 }, 22287 "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT": { 22288 "(VK_EXT_vertex_attribute_divisor)": [ 22289 { 22290 "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT-sType-sType", 22291 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT</code>" 22292 } 22293 ] 22294 }, 22295 "VkPhysicalDeviceASTCDecodeFeaturesEXT": { 22296 "(VK_EXT_astc_decode_mode)": [ 22297 { 22298 "vuid": "VUID-VkPhysicalDeviceASTCDecodeFeaturesEXT-sType-sType", 22299 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT</code>" 22300 } 22301 ] 22302 }, 22303 "VkPhysicalDeviceTransformFeedbackFeaturesEXT": { 22304 "(VK_EXT_transform_feedback)": [ 22305 { 22306 "vuid": "VUID-VkPhysicalDeviceTransformFeedbackFeaturesEXT-sType-sType", 22307 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT</code>" 22308 } 22309 ] 22310 }, 22311 "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR": { 22312 "(VK_KHR_vulkan_memory_model)": [ 22313 { 22314 "vuid": "VUID-VkPhysicalDeviceVulkanMemoryModelFeaturesKHR-sType-sType", 22315 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR</code>" 22316 } 22317 ] 22318 }, 22319 "VkPhysicalDeviceInlineUniformBlockFeaturesEXT": { 22320 "(VK_EXT_inline_uniform_block)": [ 22321 { 22322 "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockFeaturesEXT-sType-sType", 22323 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT</code>" 22324 } 22325 ] 22326 }, 22327 "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV": { 22328 "(VK_NV_representative_fragment_test)": [ 22329 { 22330 "vuid": "VUID-VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV-sType-sType", 22331 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV</code>" 22332 } 22333 ] 22334 }, 22335 "VkPhysicalDeviceExclusiveScissorFeaturesNV": { 22336 "(VK_NV_scissor_exclusive)": [ 22337 { 22338 "vuid": "VUID-VkPhysicalDeviceExclusiveScissorFeaturesNV-sType-sType", 22339 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV</code>" 22340 } 22341 ] 22342 }, 22343 "VkPhysicalDeviceCornerSampledImageFeaturesNV": { 22344 "(VK_NV_corner_sampled_image)": [ 22345 { 22346 "vuid": "VUID-VkPhysicalDeviceCornerSampledImageFeaturesNV-sType-sType", 22347 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV</code>" 22348 } 22349 ] 22350 }, 22351 "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV": { 22352 "(VK_NV_compute_shader_derivatives)": [ 22353 { 22354 "vuid": "VUID-VkPhysicalDeviceComputeShaderDerivativesFeaturesNV-sType-sType", 22355 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV</code>" 22356 } 22357 ] 22358 }, 22359 "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV": { 22360 "(VK_NV_fragment_shader_barycentric)": [ 22361 { 22362 "vuid": "VUID-VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV-sType-sType", 22363 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV</code>" 22364 } 22365 ] 22366 }, 22367 "VkPhysicalDeviceShaderImageFootprintFeaturesNV": { 22368 "(VK_NV_shader_image_footprint)": [ 22369 { 22370 "vuid": "VUID-VkPhysicalDeviceShaderImageFootprintFeaturesNV-sType-sType", 22371 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV</code>" 22372 } 22373 ] 22374 }, 22375 "VkPhysicalDeviceShadingRateImageFeaturesNV": { 22376 "(VK_NV_shading_rate_image)": [ 22377 { 22378 "vuid": "VUID-VkPhysicalDeviceShadingRateImageFeaturesNV-sType-sType", 22379 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV</code>" 22380 } 22381 ] 22382 }, 22383 "VkPhysicalDeviceFragmentDensityMapFeaturesEXT": { 22384 "(VK_EXT_fragment_density_map)": [ 22385 { 22386 "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapFeaturesEXT-sType-sType", 22387 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT</code>" 22388 } 22389 ] 22390 }, 22391 "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT": { 22392 "(VK_EXT_scalar_block_layout)": [ 22393 { 22394 "vuid": "VUID-VkPhysicalDeviceScalarBlockLayoutFeaturesEXT-sType-sType", 22395 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT</code>" 22396 } 22397 ] 22398 }, 22399 "VkPhysicalDeviceDepthClipEnableFeaturesEXT": { 22400 "(VK_EXT_depth_clip_enable)": [ 22401 { 22402 "vuid": "VUID-VkPhysicalDeviceDepthClipEnableFeaturesEXT-sType-sType", 22403 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT</code>" 22404 } 22405 ] 22406 }, 22407 "VkPhysicalDeviceMemoryPriorityFeaturesEXT": { 22408 "(VK_EXT_memory_priority)": [ 22409 { 22410 "vuid": "VUID-VkPhysicalDeviceMemoryPriorityFeaturesEXT-sType-sType", 22411 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT</code>" 22412 } 22413 ] 22414 }, 22415 "VkPhysicalDeviceBufferAddressFeaturesEXT": { 22416 "(VK_EXT_buffer_device_address)": [ 22417 { 22418 "vuid": "VUID-VkPhysicalDeviceBufferAddressFeaturesEXT-sType-sType", 22419 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT</code>" 22420 } 22421 ] 22422 }, 22423 "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV": { 22424 "(VK_NV_dedicated_allocation_image_aliasing)": [ 22425 { 22426 "vuid": "VUID-VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV-sType-sType", 22427 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV</code>" 22428 } 22429 ] 22430 }, 22431 "VkPhysicalDeviceCooperativeMatrixFeaturesNV": { 22432 "(VK_NV_cooperative_matrix)": [ 22433 { 22434 "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixFeaturesNV-sType-sType", 22435 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV</code>" 22436 } 22437 ] 22438 }, 22439 "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT": { 22440 "(VK_EXT_ycbcr_image_arrays)": [ 22441 { 22442 "vuid": "VUID-VkPhysicalDeviceYcbcrImageArraysFeaturesEXT-sType-sType", 22443 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT</code>" 22444 } 22445 ] 22446 }, 22447 "VkPhysicalDevicePushDescriptorPropertiesKHR": { 22448 "(VK_KHR_push_descriptor)": [ 22449 { 22450 "vuid": "VUID-VkPhysicalDevicePushDescriptorPropertiesKHR-sType-sType", 22451 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR</code>" 22452 } 22453 ] 22454 }, 22455 "VkPhysicalDeviceMultiviewProperties": { 22456 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 22457 { 22458 "vuid": "VUID-VkPhysicalDeviceMultiviewProperties-sType-sType", 22459 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES</code>" 22460 } 22461 ] 22462 }, 22463 "VkPhysicalDeviceFloatControlsPropertiesKHR": { 22464 "(VK_KHR_shader_float_controls)": [ 22465 { 22466 "vuid": "VUID-VkPhysicalDeviceFloatControlsPropertiesKHR-sType-sType", 22467 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR</code>" 22468 } 22469 ] 22470 }, 22471 "VkPhysicalDeviceDiscardRectanglePropertiesEXT": { 22472 "(VK_EXT_discard_rectangles)": [ 22473 { 22474 "vuid": "VUID-VkPhysicalDeviceDiscardRectanglePropertiesEXT-sType-sType", 22475 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT</code>" 22476 } 22477 ] 22478 }, 22479 "VkPhysicalDeviceSampleLocationsPropertiesEXT": { 22480 "(VK_EXT_sample_locations)": [ 22481 { 22482 "vuid": "VUID-VkPhysicalDeviceSampleLocationsPropertiesEXT-sType-sType", 22483 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT</code>" 22484 } 22485 ] 22486 }, 22487 "VkPhysicalDeviceExternalMemoryHostPropertiesEXT": { 22488 "(VK_EXT_external_memory_host)": [ 22489 { 22490 "vuid": "VUID-VkPhysicalDeviceExternalMemoryHostPropertiesEXT-sType-sType", 22491 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT</code>" 22492 } 22493 ] 22494 }, 22495 "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX": { 22496 "(VK_NVX_multiview_per_view_attributes)": [ 22497 { 22498 "vuid": "VUID-VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX-sType-sType", 22499 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX</code>" 22500 } 22501 ] 22502 }, 22503 "VkPhysicalDevicePointClippingProperties": { 22504 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 22505 { 22506 "vuid": "VUID-VkPhysicalDevicePointClippingProperties-sType-sType", 22507 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES</code>" 22508 } 22509 ] 22510 }, 22511 "VkPhysicalDeviceSubgroupProperties": { 22512 "(VK_VERSION_1_1)": [ 22513 { 22514 "vuid": "VUID-VkPhysicalDeviceSubgroupProperties-sType-sType", 22515 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES</code>" 22516 } 22517 ] 22518 }, 22519 "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT": { 22520 "(VK_EXT_blend_operation_advanced)": [ 22521 { 22522 "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT-sType-sType", 22523 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT</code>" 22524 } 22525 ] 22526 }, 22527 "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT": { 22528 "(VK_EXT_vertex_attribute_divisor)": [ 22529 { 22530 "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT-sType-sType", 22531 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT</code>" 22532 } 22533 ] 22534 }, 22535 "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT": { 22536 "(VK_EXT_sampler_filter_minmax)": [ 22537 { 22538 "vuid": "VUID-VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT-sType-sType", 22539 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT</code>" 22540 } 22541 ] 22542 }, 22543 "VkPhysicalDeviceProtectedMemoryProperties": { 22544 "(VK_VERSION_1_1)": [ 22545 { 22546 "vuid": "VUID-VkPhysicalDeviceProtectedMemoryProperties-sType-sType", 22547 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES</code>" 22548 } 22549 ] 22550 }, 22551 "VkPhysicalDeviceMaintenance3Properties": { 22552 "(VK_VERSION_1_1,VK_KHR_maintenance3)": [ 22553 { 22554 "vuid": "VUID-VkPhysicalDeviceMaintenance3Properties-sType-sType", 22555 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES</code>" 22556 } 22557 ] 22558 }, 22559 "VkPhysicalDeviceMeshShaderPropertiesNV": { 22560 "(VK_NV_mesh_shader)": [ 22561 { 22562 "vuid": "VUID-VkPhysicalDeviceMeshShaderPropertiesNV-sType-sType", 22563 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV</code>" 22564 } 22565 ] 22566 }, 22567 "VkPhysicalDeviceDescriptorIndexingPropertiesEXT": { 22568 "(VK_EXT_descriptor_indexing)": [ 22569 { 22570 "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingPropertiesEXT-sType-sType", 22571 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT</code>" 22572 } 22573 ] 22574 }, 22575 "VkPhysicalDeviceInlineUniformBlockPropertiesEXT": { 22576 "(VK_EXT_inline_uniform_block)": [ 22577 { 22578 "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockPropertiesEXT-sType-sType", 22579 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT</code>" 22580 } 22581 ] 22582 }, 22583 "VkPhysicalDeviceConservativeRasterizationPropertiesEXT": { 22584 "(VK_EXT_conservative_rasterization)": [ 22585 { 22586 "vuid": "VUID-VkPhysicalDeviceConservativeRasterizationPropertiesEXT-sType-sType", 22587 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT</code>" 22588 } 22589 ] 22590 }, 22591 "VkPhysicalDeviceFragmentDensityMapPropertiesEXT": { 22592 "(VK_EXT_fragment_density_map)": [ 22593 { 22594 "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapPropertiesEXT-sType-sType", 22595 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT</code>" 22596 } 22597 ] 22598 }, 22599 "VkPhysicalDeviceShaderCorePropertiesAMD": { 22600 "(VK_AMD_shader_core_properties)": [ 22601 { 22602 "vuid": "VUID-VkPhysicalDeviceShaderCorePropertiesAMD-sType-sType", 22603 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD</code>" 22604 } 22605 ] 22606 }, 22607 "VkPhysicalDeviceDepthStencilResolvePropertiesKHR": { 22608 "(VK_KHR_depth_stencil_resolve)": [ 22609 { 22610 "vuid": "VUID-VkPhysicalDeviceDepthStencilResolvePropertiesKHR-sType-sType", 22611 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR</code>" 22612 } 22613 ] 22614 }, 22615 "VkPhysicalDeviceShadingRateImagePropertiesNV": { 22616 "(VK_NV_shading_rate_image)": [ 22617 { 22618 "vuid": "VUID-VkPhysicalDeviceShadingRateImagePropertiesNV-sType-sType", 22619 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV</code>" 22620 } 22621 ] 22622 }, 22623 "VkPhysicalDeviceTransformFeedbackPropertiesEXT": { 22624 "(VK_EXT_transform_feedback)": [ 22625 { 22626 "vuid": "VUID-VkPhysicalDeviceTransformFeedbackPropertiesEXT-sType-sType", 22627 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT</code>" 22628 } 22629 ] 22630 }, 22631 "VkPhysicalDeviceRayTracingPropertiesNV": { 22632 "(VK_NV_ray_tracing)": [ 22633 { 22634 "vuid": "VUID-VkPhysicalDeviceRayTracingPropertiesNV-sType-sType", 22635 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV</code>" 22636 } 22637 ] 22638 }, 22639 "VkPhysicalDeviceCooperativeMatrixPropertiesNV": { 22640 "(VK_NV_cooperative_matrix)": [ 22641 { 22642 "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixPropertiesNV-sType-sType", 22643 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>" 22644 } 22645 ] 22646 }, 22647 "vkGetPhysicalDeviceMultisamplePropertiesEXT": { 22648 "(VK_EXT_sample_locations)": [ 22649 { 22650 "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter", 22651 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 22652 }, 22653 { 22654 "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter", 22655 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 22656 }, 22657 { 22658 "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-pMultisampleProperties-parameter", 22659 "text": " <code>pMultisampleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMultisamplePropertiesEXT</code> structure" 22660 } 22661 ] 22662 }, 22663 "VkMultisamplePropertiesEXT": { 22664 "(VK_EXT_sample_locations)": [ 22665 { 22666 "vuid": "VUID-VkMultisamplePropertiesEXT-sType-sType", 22667 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT</code>" 22668 }, 22669 { 22670 "vuid": "VUID-VkMultisamplePropertiesEXT-pNext-pNext", 22671 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 22672 } 22673 ] 22674 }, 22675 "vkGetPhysicalDeviceFormatProperties": { 22676 "core": [ 22677 { 22678 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter", 22679 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 22680 }, 22681 { 22682 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-format-parameter", 22683 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 22684 }, 22685 { 22686 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-pFormatProperties-parameter", 22687 "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFormatProperties</code> structure" 22688 } 22689 ] 22690 }, 22691 "vkGetPhysicalDeviceFormatProperties2": { 22692 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 22693 { 22694 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter", 22695 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 22696 }, 22697 { 22698 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-format-parameter", 22699 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 22700 }, 22701 { 22702 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-pFormatProperties-parameter", 22703 "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFormatProperties2</code> structure" 22704 } 22705 ] 22706 }, 22707 "VkFormatProperties2": { 22708 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 22709 { 22710 "vuid": "VUID-VkFormatProperties2-sType-sType", 22711 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2</code>" 22712 }, 22713 { 22714 "vuid": "VUID-VkFormatProperties2-pNext-pNext", 22715 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDrmFormatModifierPropertiesListEXT\">VkDrmFormatModifierPropertiesListEXT</a>" 22716 } 22717 ] 22718 }, 22719 "VkDrmFormatModifierPropertiesListEXT": { 22720 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [ 22721 { 22722 "vuid": "VUID-VkDrmFormatModifierPropertiesListEXT-sType-sType", 22723 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT</code>" 22724 } 22725 ] 22726 }, 22727 "vkGetPhysicalDeviceImageFormatProperties": { 22728 "(VK_EXT_image_drm_format_modifier)": [ 22729 { 22730 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-02248", 22731 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>. (Use <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> instead)." 22732 } 22733 ], 22734 "core": [ 22735 { 22736 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter", 22737 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 22738 }, 22739 { 22740 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter", 22741 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 22742 }, 22743 { 22744 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-type-parameter", 22745 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value" 22746 }, 22747 { 22748 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter", 22749 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value" 22750 }, 22751 { 22752 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter", 22753 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 22754 }, 22755 { 22756 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask", 22757 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 22758 }, 22759 { 22760 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter", 22761 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values" 22762 }, 22763 { 22764 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-pImageFormatProperties-parameter", 22765 "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageFormatProperties</code> structure" 22766 } 22767 ] 22768 }, 22769 "vkGetPhysicalDeviceExternalImageFormatPropertiesNV": { 22770 "(VK_NV_external_memory_capabilities)": [ 22771 { 22772 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-physicalDevice-parameter", 22773 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 22774 }, 22775 { 22776 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-format-parameter", 22777 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 22778 }, 22779 { 22780 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-type-parameter", 22781 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value" 22782 }, 22783 { 22784 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-tiling-parameter", 22785 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value" 22786 }, 22787 { 22788 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-parameter", 22789 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 22790 }, 22791 { 22792 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-requiredbitmask", 22793 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 22794 }, 22795 { 22796 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-flags-parameter", 22797 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values" 22798 }, 22799 { 22800 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-parameter", 22801 "text": " <code>externalHandleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values" 22802 }, 22803 { 22804 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-pExternalImageFormatProperties-parameter", 22805 "text": " <code>pExternalImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalImageFormatPropertiesNV</code> structure" 22806 } 22807 ] 22808 }, 22809 "vkGetPhysicalDeviceImageFormatProperties2": { 22810 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [ 22811 { 22812 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-01868", 22813 "text": " If the <code>pNext</code> chain of <code>pImageFormatProperties</code> contains an instance of <a href=\"#VkAndroidHardwareBufferUsageANDROID\">VkAndroidHardwareBufferUsageANDROID</a>, the <code>pNext</code> chain of <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> with <code>handleType</code> set to <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>." 22814 } 22815 ], 22816 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 22817 { 22818 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter", 22819 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 22820 }, 22821 { 22822 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatInfo-parameter", 22823 "text": " <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceImageFormatInfo2</code> structure" 22824 }, 22825 { 22826 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatProperties-parameter", 22827 "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageFormatProperties2</code> structure" 22828 } 22829 ] 22830 }, 22831 "VkPhysicalDeviceImageFormatInfo2": { 22832 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [ 22833 { 22834 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02249", 22835 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> if and only if the <code>pNext</code> chain contains <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>." 22836 }, 22837 { 22838 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02313", 22839 "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a> with non-zero <code>viewFormatCount</code>." 22840 } 22841 ], 22842 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 22843 { 22844 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType", 22845 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2</code>" 22846 }, 22847 { 22848 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext", 22849 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a>, <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a>, <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>, or <a href=\"#VkPhysicalDeviceImageViewImageFormatInfoEXT\">VkPhysicalDeviceImageViewImageFormatInfoEXT</a>" 22850 }, 22851 { 22852 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-unique", 22853 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 22854 }, 22855 { 22856 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter", 22857 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 22858 }, 22859 { 22860 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-type-parameter", 22861 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value" 22862 }, 22863 { 22864 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-parameter", 22865 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value" 22866 }, 22867 { 22868 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-parameter", 22869 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 22870 }, 22871 { 22872 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-requiredbitmask", 22873 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 22874 }, 22875 { 22876 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-flags-parameter", 22877 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values" 22878 } 22879 ] 22880 }, 22881 "VkImageFormatProperties2": { 22882 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 22883 { 22884 "vuid": "VUID-VkImageFormatProperties2-sType-sType", 22885 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2</code>" 22886 }, 22887 { 22888 "vuid": "VUID-VkImageFormatProperties2-pNext-pNext", 22889 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkAndroidHardwareBufferUsageANDROID\">VkAndroidHardwareBufferUsageANDROID</a>, <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a>, <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>, <a href=\"#VkSamplerYcbcrConversionImageFormatProperties\">VkSamplerYcbcrConversionImageFormatProperties</a>, or <a href=\"#VkTextureLODGatherFormatPropertiesAMD\">VkTextureLODGatherFormatPropertiesAMD</a>" 22890 }, 22891 { 22892 "vuid": "VUID-VkImageFormatProperties2-sType-unique", 22893 "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 22894 } 22895 ] 22896 }, 22897 "VkTextureLODGatherFormatPropertiesAMD": { 22898 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_AMD_texture_gather_bias_lod)": [ 22899 { 22900 "vuid": "VUID-VkTextureLODGatherFormatPropertiesAMD-sType-sType", 22901 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD</code>" 22902 } 22903 ] 22904 }, 22905 "VkPhysicalDeviceExternalImageFormatInfo": { 22906 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [ 22907 { 22908 "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-sType-sType", 22909 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO</code>" 22910 }, 22911 { 22912 "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-handleType-parameter", 22913 "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 22914 } 22915 ] 22916 }, 22917 "VkExternalImageFormatProperties": { 22918 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [ 22919 { 22920 "vuid": "VUID-VkExternalImageFormatProperties-sType-sType", 22921 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES</code>" 22922 } 22923 ] 22924 }, 22925 "VkPhysicalDeviceImageDrmFormatModifierInfoEXT": { 22926 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [ 22927 { 22928 "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314", 22929 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, then <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values." 22930 }, 22931 { 22932 "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315", 22933 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, then <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>." 22934 }, 22935 { 22936 "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02316", 22937 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than the <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>." 22938 }, 22939 { 22940 "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sType-sType", 22941 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT</code>" 22942 }, 22943 { 22944 "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-parameter", 22945 "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value" 22946 } 22947 ] 22948 }, 22949 "VkSamplerYcbcrConversionImageFormatProperties": { 22950 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 22951 { 22952 "vuid": "VUID-VkSamplerYcbcrConversionImageFormatProperties-sType-sType", 22953 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES</code>" 22954 } 22955 ] 22956 }, 22957 "VkAndroidHardwareBufferUsageANDROID": { 22958 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [ 22959 { 22960 "vuid": "VUID-VkAndroidHardwareBufferUsageANDROID-sType-sType", 22961 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID</code>" 22962 } 22963 ] 22964 }, 22965 "VkPhysicalDeviceImageViewImageFormatInfoEXT": { 22966 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [ 22967 { 22968 "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-sType-sType", 22969 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT</code>" 22970 }, 22971 { 22972 "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-imageViewType-parameter", 22973 "text": " <code>imageViewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value" 22974 } 22975 ] 22976 }, 22977 "VkFilterCubicImageViewImageFormatPropertiesEXT": { 22978 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [ 22979 { 22980 "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-sType-sType", 22981 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT</code>" 22982 }, 22983 { 22984 "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-pNext-02627", 22985 "text": " If the <code>pNext</code> chain of the <a href=\"#VkImageFormatProperties2\">VkImageFormatProperties2</a> structure contains an instance of <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>, the <code>pNext</code> chain of the <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> structure <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkPhysicalDeviceImageViewImageFormatInfoEXT\">VkPhysicalDeviceImageViewImageFormatInfoEXT</a> with an <code>imageViewType</code> that is compatible with <code>imageType</code>." 22986 } 22987 ] 22988 }, 22989 "vkGetPhysicalDeviceExternalBufferProperties": { 22990 "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [ 22991 { 22992 "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter", 22993 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 22994 }, 22995 { 22996 "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferInfo-parameter", 22997 "text": " <code>pExternalBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceExternalBufferInfo</code> structure" 22998 }, 22999 { 23000 "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferProperties-parameter", 23001 "text": " <code>pExternalBufferProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalBufferProperties</code> structure" 23002 } 23003 ] 23004 }, 23005 "VkPhysicalDeviceExternalBufferInfo": { 23006 "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [ 23007 { 23008 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-sType-sType", 23009 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO</code>" 23010 }, 23011 { 23012 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-pNext-pNext", 23013 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23014 }, 23015 { 23016 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter", 23017 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values" 23018 }, 23019 { 23020 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-parameter", 23021 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values" 23022 }, 23023 { 23024 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-requiredbitmask", 23025 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 23026 }, 23027 { 23028 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter", 23029 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 23030 } 23031 ] 23032 }, 23033 "VkExternalBufferProperties": { 23034 "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [ 23035 { 23036 "vuid": "VUID-VkExternalBufferProperties-sType-sType", 23037 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES</code>" 23038 }, 23039 { 23040 "vuid": "VUID-VkExternalBufferProperties-pNext-pNext", 23041 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23042 } 23043 ] 23044 }, 23045 "vkGetPhysicalDeviceExternalSemaphoreProperties": { 23046 "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [ 23047 { 23048 "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter", 23049 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 23050 }, 23051 { 23052 "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreInfo-parameter", 23053 "text": " <code>pExternalSemaphoreInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceExternalSemaphoreInfo</code> structure" 23054 }, 23055 { 23056 "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreProperties-parameter", 23057 "text": " <code>pExternalSemaphoreProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalSemaphoreProperties</code> structure" 23058 } 23059 ] 23060 }, 23061 "VkPhysicalDeviceExternalSemaphoreInfo": { 23062 "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [ 23063 { 23064 "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-sType", 23065 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO</code>" 23066 }, 23067 { 23068 "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-pNext-pNext", 23069 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23070 }, 23071 { 23072 "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter", 23073 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value" 23074 } 23075 ] 23076 }, 23077 "VkExternalSemaphoreProperties": { 23078 "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [ 23079 { 23080 "vuid": "VUID-VkExternalSemaphoreProperties-sType-sType", 23081 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES</code>" 23082 }, 23083 { 23084 "vuid": "VUID-VkExternalSemaphoreProperties-pNext-pNext", 23085 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23086 } 23087 ] 23088 }, 23089 "vkGetPhysicalDeviceExternalFenceProperties": { 23090 "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [ 23091 { 23092 "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter", 23093 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 23094 }, 23095 { 23096 "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceInfo-parameter", 23097 "text": " <code>pExternalFenceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceExternalFenceInfo</code> structure" 23098 }, 23099 { 23100 "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceProperties-parameter", 23101 "text": " <code>pExternalFenceProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalFenceProperties</code> structure" 23102 } 23103 ] 23104 }, 23105 "VkPhysicalDeviceExternalFenceInfo": { 23106 "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [ 23107 { 23108 "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-sType-sType", 23109 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO</code>" 23110 }, 23111 { 23112 "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-pNext-pNext", 23113 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23114 }, 23115 { 23116 "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter", 23117 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value" 23118 } 23119 ] 23120 }, 23121 "VkExternalFenceProperties": { 23122 "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [ 23123 { 23124 "vuid": "VUID-VkExternalFenceProperties-sType-sType", 23125 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES</code>" 23126 }, 23127 { 23128 "vuid": "VUID-VkExternalFenceProperties-pNext-pNext", 23129 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23130 } 23131 ] 23132 }, 23133 "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT": { 23134 "(VK_EXT_calibrated_timestamps)": [ 23135 { 23136 "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-physicalDevice-parameter", 23137 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" 23138 }, 23139 { 23140 "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomainCount-parameter", 23141 "text": " <code>pTimeDomainCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 23142 }, 23143 { 23144 "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomains-parameter", 23145 "text": " If the value referenced by <code>pTimeDomainCount</code> is not <code>0</code>, and <code>pTimeDomains</code> is not <code>NULL</code>, <code>pTimeDomains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pTimeDomainCount</code> <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> values" 23146 } 23147 ] 23148 }, 23149 "vkSetDebugUtilsObjectNameEXT": { 23150 "(VK_EXT_debug_utils)": [ 23151 { 23152 "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02587", 23153 "text": " <code>pNameInfo</code>-><code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>" 23154 }, 23155 { 23156 "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02588", 23157 "text": " <code>pNameInfo</code>-><code>objectHandle</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 23158 }, 23159 { 23160 "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-device-parameter", 23161 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 23162 }, 23163 { 23164 "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-parameter", 23165 "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsObjectNameInfoEXT</code> structure" 23166 } 23167 ] 23168 }, 23169 "VkDebugUtilsObjectNameInfoEXT": { 23170 "(VK_EXT_debug_utils)": [ 23171 { 23172 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589", 23173 "text": " If <code>objectType</code> is <code>VK_OBJECT_TYPE_UNKNOWN</code>, <code>objectHandle</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 23174 }, 23175 { 23176 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02590", 23177 "text": " If <code>objectType</code> is not <code>VK_OBJECT_TYPE_UNKNOWN</code>, <code>objectHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> or a valid Vulkan handle of the type associated with <code>objectType</code> as defined in the <a href=\"#debugging-object-types\">VkObjectType and Vulkan Handle Relationship</a> table" 23178 }, 23179 { 23180 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType", 23181 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT</code>" 23182 }, 23183 { 23184 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pNext-pNext", 23185 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23186 }, 23187 { 23188 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter", 23189 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value" 23190 }, 23191 { 23192 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pObjectName-parameter", 23193 "text": " If <code>pObjectName</code> is not <code>NULL</code>, <code>pObjectName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 23194 } 23195 ] 23196 }, 23197 "vkSetDebugUtilsObjectTagEXT": { 23198 "(VK_EXT_debug_utils)": [ 23199 { 23200 "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-device-parameter", 23201 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 23202 }, 23203 { 23204 "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-pTagInfo-parameter", 23205 "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsObjectTagInfoEXT</code> structure" 23206 } 23207 ] 23208 }, 23209 "VkDebugUtilsObjectTagInfoEXT": { 23210 "(VK_EXT_debug_utils)": [ 23211 { 23212 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-01908", 23213 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>" 23214 }, 23215 { 23216 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910", 23217 "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be a valid Vulkan handle of the type associated with <code>objectType</code> as defined in the <a href=\"#debugging-object-types\">VkObjectType and Vulkan Handle Relationship</a> table" 23218 }, 23219 { 23220 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-sType-sType", 23221 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT</code>" 23222 }, 23223 { 23224 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pNext-pNext", 23225 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23226 }, 23227 { 23228 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter", 23229 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value" 23230 }, 23231 { 23232 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter", 23233 "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes" 23234 }, 23235 { 23236 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength", 23237 "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 23238 } 23239 ] 23240 }, 23241 "vkQueueBeginDebugUtilsLabelEXT": { 23242 "(VK_EXT_debug_utils)": [ 23243 { 23244 "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter", 23245 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle" 23246 }, 23247 { 23248 "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter", 23249 "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure" 23250 } 23251 ] 23252 }, 23253 "VkDebugUtilsLabelEXT": { 23254 "(VK_EXT_debug_utils)": [ 23255 { 23256 "vuid": "VUID-VkDebugUtilsLabelEXT-sType-sType", 23257 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT</code>" 23258 }, 23259 { 23260 "vuid": "VUID-VkDebugUtilsLabelEXT-pNext-pNext", 23261 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23262 }, 23263 { 23264 "vuid": "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter", 23265 "text": " <code>pLabelName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 23266 } 23267 ] 23268 }, 23269 "vkQueueEndDebugUtilsLabelEXT": { 23270 "(VK_EXT_debug_utils)": [ 23271 { 23272 "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-None-01911", 23273 "text": " There <strong class=\"purple\">must</strong> be an outstanding <code>vkQueueBeginDebugUtilsLabelEXT</code> command prior to the <code>vkQueueEndDebugUtilsLabelEXT</code> on the queue" 23274 }, 23275 { 23276 "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter", 23277 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle" 23278 } 23279 ] 23280 }, 23281 "vkQueueInsertDebugUtilsLabelEXT": { 23282 "(VK_EXT_debug_utils)": [ 23283 { 23284 "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter", 23285 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle" 23286 }, 23287 { 23288 "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter", 23289 "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure" 23290 } 23291 ] 23292 }, 23293 "vkCmdBeginDebugUtilsLabelEXT": { 23294 "(VK_EXT_debug_utils)": [ 23295 { 23296 "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter", 23297 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 23298 }, 23299 { 23300 "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-pLabelInfo-parameter", 23301 "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure" 23302 }, 23303 { 23304 "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-recording", 23305 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 23306 }, 23307 { 23308 "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-cmdpool", 23309 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 23310 } 23311 ] 23312 }, 23313 "vkCmdEndDebugUtilsLabelEXT": { 23314 "(VK_EXT_debug_utils)": [ 23315 { 23316 "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912", 23317 "text": " There <strong class=\"purple\">must</strong> be an outstanding <code>vkCmdBeginDebugUtilsLabelEXT</code> command prior to the <code>vkCmdEndDebugUtilsLabelEXT</code> on the queue that <code>commandBuffer</code> is submitted to" 23318 }, 23319 { 23320 "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01913", 23321 "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> be an outstanding <code>vkCmdBeginDebugUtilsLabelEXT</code> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <code>vkCmdEndDebugUtilsLabelEXT</code>." 23322 }, 23323 { 23324 "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter", 23325 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 23326 }, 23327 { 23328 "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-recording", 23329 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 23330 }, 23331 { 23332 "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-cmdpool", 23333 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 23334 } 23335 ] 23336 }, 23337 "vkCmdInsertDebugUtilsLabelEXT": { 23338 "(VK_EXT_debug_utils)": [ 23339 { 23340 "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter", 23341 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 23342 }, 23343 { 23344 "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-pLabelInfo-parameter", 23345 "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure" 23346 }, 23347 { 23348 "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-recording", 23349 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 23350 }, 23351 { 23352 "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-cmdpool", 23353 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 23354 } 23355 ] 23356 }, 23357 "vkCreateDebugUtilsMessengerEXT": { 23358 "(VK_EXT_debug_utils)": [ 23359 { 23360 "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-instance-parameter", 23361 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 23362 }, 23363 { 23364 "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pCreateInfo-parameter", 23365 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsMessengerCreateInfoEXT</code> structure" 23366 }, 23367 { 23368 "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pAllocator-parameter", 23369 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 23370 }, 23371 { 23372 "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pMessenger-parameter", 23373 "text": " <code>pMessenger</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDebugUtilsMessengerEXT</code> handle" 23374 } 23375 ] 23376 }, 23377 "VkDebugUtilsMessengerCreateInfoEXT": { 23378 "(VK_EXT_debug_utils)": [ 23379 { 23380 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-01914", 23381 "text": " <code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugUtilsMessengerCallbackEXT\">PFN_vkDebugUtilsMessengerCallbackEXT</a>" 23382 }, 23383 { 23384 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-sType-sType", 23385 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT</code>" 23386 }, 23387 { 23388 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-flags-zerobitmask", 23389 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 23390 }, 23391 { 23392 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-parameter", 23393 "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> values" 23394 }, 23395 { 23396 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-requiredbitmask", 23397 "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 23398 }, 23399 { 23400 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter", 23401 "text": " <code>messageType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values" 23402 }, 23403 { 23404 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-requiredbitmask", 23405 "text": " <code>messageType</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 23406 } 23407 ] 23408 }, 23409 "VkDebugUtilsMessengerCallbackDataEXT": { 23410 "(VK_EXT_debug_utils)": [ 23411 { 23412 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-sType", 23413 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT</code>" 23414 }, 23415 { 23416 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pNext-pNext", 23417 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23418 }, 23419 { 23420 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-flags-zerobitmask", 23421 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 23422 }, 23423 { 23424 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessageIdName-parameter", 23425 "text": " If <code>pMessageIdName</code> is not <code>NULL</code>, <code>pMessageIdName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 23426 }, 23427 { 23428 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessage-parameter", 23429 "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 23430 }, 23431 { 23432 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pQueueLabels-parameter", 23433 "text": " If <code>queueLabelCount</code> is not <code>0</code>, <code>pQueueLabels</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueLabelCount</code> valid <code>VkDebugUtilsLabelEXT</code> structures" 23434 }, 23435 { 23436 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pCmdBufLabels-parameter", 23437 "text": " If <code>cmdBufLabelCount</code> is not <code>0</code>, <code>pCmdBufLabels</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>cmdBufLabelCount</code> valid <code>VkDebugUtilsLabelEXT</code> structures" 23438 }, 23439 { 23440 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pObjects-parameter", 23441 "text": " If <code>objectCount</code> is not <code>0</code>, <code>pObjects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <code>VkDebugUtilsObjectNameInfoEXT</code> structures" 23442 } 23443 ] 23444 }, 23445 "vkSubmitDebugUtilsMessageEXT": { 23446 "(VK_EXT_debug_utils)": [ 23447 { 23448 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-objectType-02591", 23449 "text": " <code>objectType</code> member of each element of <code>pCallbackData</code>-><code>pObjects</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>" 23450 }, 23451 { 23452 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-instance-parameter", 23453 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 23454 }, 23455 { 23456 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageSeverity-parameter", 23457 "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> value" 23458 }, 23459 { 23460 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-parameter", 23461 "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values" 23462 }, 23463 { 23464 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-requiredbitmask", 23465 "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 23466 }, 23467 { 23468 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-pCallbackData-parameter", 23469 "text": " <code>pCallbackData</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsMessengerCallbackDataEXT</code> structure" 23470 } 23471 ] 23472 }, 23473 "vkDestroyDebugUtilsMessengerEXT": { 23474 "(VK_EXT_debug_utils)": [ 23475 { 23476 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01915", 23477 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>messenger</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 23478 }, 23479 { 23480 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01916", 23481 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>messenger</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23482 }, 23483 { 23484 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-instance-parameter", 23485 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 23486 }, 23487 { 23488 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parameter", 23489 "text": " <code>messenger</code> <strong class=\"purple\">must</strong> be a valid <code>VkDebugUtilsMessengerEXT</code> handle" 23490 }, 23491 { 23492 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-pAllocator-parameter", 23493 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 23494 }, 23495 { 23496 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parent", 23497 "text": " <code>messenger</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>" 23498 } 23499 ] 23500 }, 23501 "vkDebugMarkerSetObjectNameEXT": { 23502 "(VK_EXT_debug_marker)": [ 23503 { 23504 "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-device-parameter", 23505 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 23506 }, 23507 { 23508 "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter", 23509 "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerObjectNameInfoEXT</code> structure" 23510 } 23511 ] 23512 }, 23513 "VkDebugMarkerObjectNameInfoEXT": { 23514 "(VK_EXT_debug_marker)": [ 23515 { 23516 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-01490", 23517 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>" 23518 }, 23519 { 23520 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01491", 23521 "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 23522 }, 23523 { 23524 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01492", 23525 "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\">VkDebugReportObjectTypeEXT and Vulkan Handle Relationship</a>." 23526 }, 23527 { 23528 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-sType-sType", 23529 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT</code>" 23530 }, 23531 { 23532 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pNext-pNext", 23533 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23534 }, 23535 { 23536 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter", 23537 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value" 23538 }, 23539 { 23540 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter", 23541 "text": " <code>pObjectName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 23542 } 23543 ] 23544 }, 23545 "vkDebugMarkerSetObjectTagEXT": { 23546 "(VK_EXT_debug_marker)": [ 23547 { 23548 "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-device-parameter", 23549 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" 23550 }, 23551 { 23552 "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter", 23553 "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerObjectTagInfoEXT</code> structure" 23554 } 23555 ] 23556 }, 23557 "VkDebugMarkerObjectTagInfoEXT": { 23558 "(VK_EXT_debug_marker)": [ 23559 { 23560 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-01493", 23561 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>" 23562 }, 23563 { 23564 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01494", 23565 "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 23566 }, 23567 { 23568 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01495", 23569 "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\">VkDebugReportObjectTypeEXT and Vulkan Handle Relationship</a>." 23570 }, 23571 { 23572 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-sType-sType", 23573 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT</code>" 23574 }, 23575 { 23576 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pNext-pNext", 23577 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23578 }, 23579 { 23580 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter", 23581 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value" 23582 }, 23583 { 23584 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter", 23585 "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes" 23586 }, 23587 { 23588 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength", 23589 "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 23590 } 23591 ] 23592 }, 23593 "vkCmdDebugMarkerBeginEXT": { 23594 "(VK_EXT_debug_marker)": [ 23595 { 23596 "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter", 23597 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 23598 }, 23599 { 23600 "vuid": "VUID-vkCmdDebugMarkerBeginEXT-pMarkerInfo-parameter", 23601 "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerMarkerInfoEXT</code> structure" 23602 }, 23603 { 23604 "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-recording", 23605 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 23606 }, 23607 { 23608 "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-cmdpool", 23609 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 23610 } 23611 ] 23612 }, 23613 "VkDebugMarkerMarkerInfoEXT": { 23614 "(VK_EXT_debug_marker)": [ 23615 { 23616 "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-sType-sType", 23617 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT</code>" 23618 }, 23619 { 23620 "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pNext-pNext", 23621 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23622 }, 23623 { 23624 "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pMarkerName-parameter", 23625 "text": " <code>pMarkerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 23626 } 23627 ] 23628 }, 23629 "vkCmdDebugMarkerEndEXT": { 23630 "(VK_EXT_debug_marker)": [ 23631 { 23632 "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01239", 23633 "text": " There <strong class=\"purple\">must</strong> be an outstanding <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command prior to the <code>vkCmdDebugMarkerEndEXT</code> on the queue that <code>commandBuffer</code> is submitted to" 23634 }, 23635 { 23636 "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01240", 23637 "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> be an outstanding <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdDebugMarkerEndEXT\">vkCmdDebugMarkerEndEXT</a>." 23638 }, 23639 { 23640 "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter", 23641 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 23642 }, 23643 { 23644 "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-recording", 23645 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 23646 }, 23647 { 23648 "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-cmdpool", 23649 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 23650 } 23651 ] 23652 }, 23653 "vkCmdDebugMarkerInsertEXT": { 23654 "(VK_EXT_debug_marker)": [ 23655 { 23656 "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter", 23657 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 23658 }, 23659 { 23660 "vuid": "VUID-vkCmdDebugMarkerInsertEXT-pMarkerInfo-parameter", 23661 "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerMarkerInfoEXT</code> structure" 23662 }, 23663 { 23664 "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-recording", 23665 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 23666 }, 23667 { 23668 "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-cmdpool", 23669 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 23670 } 23671 ] 23672 }, 23673 "vkCreateDebugReportCallbackEXT": { 23674 "(VK_EXT_debug_report)": [ 23675 { 23676 "vuid": "VUID-vkCreateDebugReportCallbackEXT-instance-parameter", 23677 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 23678 }, 23679 { 23680 "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCreateInfo-parameter", 23681 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugReportCallbackCreateInfoEXT</code> structure" 23682 }, 23683 { 23684 "vuid": "VUID-vkCreateDebugReportCallbackEXT-pAllocator-parameter", 23685 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 23686 }, 23687 { 23688 "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCallback-parameter", 23689 "text": " <code>pCallback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDebugReportCallbackEXT</code> handle" 23690 } 23691 ] 23692 }, 23693 "VkDebugReportCallbackCreateInfoEXT": { 23694 "(VK_EXT_debug_report)": [ 23695 { 23696 "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-01385", 23697 "text": " <code>pfnCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugReportCallbackEXT\">PFN_vkDebugReportCallbackEXT</a>" 23698 }, 23699 { 23700 "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-sType-sType", 23701 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT</code>" 23702 }, 23703 { 23704 "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-flags-parameter", 23705 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values" 23706 } 23707 ] 23708 }, 23709 "vkDebugReportMessageEXT": { 23710 "(VK_EXT_debug_report)": [ 23711 { 23712 "vuid": "VUID-vkDebugReportMessageEXT-object-01241", 23713 "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 23714 }, 23715 { 23716 "vuid": "VUID-vkDebugReportMessageEXT-objectType-01498", 23717 "text": " If <code>objectType</code> is not <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code> and <code>object</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the corresponding type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\">VkDebugReportObjectTypeEXT and Vulkan Handle Relationship</a>." 23718 }, 23719 { 23720 "vuid": "VUID-vkDebugReportMessageEXT-instance-parameter", 23721 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 23722 }, 23723 { 23724 "vuid": "VUID-vkDebugReportMessageEXT-flags-parameter", 23725 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values" 23726 }, 23727 { 23728 "vuid": "VUID-vkDebugReportMessageEXT-flags-requiredbitmask", 23729 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 23730 }, 23731 { 23732 "vuid": "VUID-vkDebugReportMessageEXT-objectType-parameter", 23733 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value" 23734 }, 23735 { 23736 "vuid": "VUID-vkDebugReportMessageEXT-pLayerPrefix-parameter", 23737 "text": " <code>pLayerPrefix</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 23738 }, 23739 { 23740 "vuid": "VUID-vkDebugReportMessageEXT-pMessage-parameter", 23741 "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 23742 } 23743 ] 23744 }, 23745 "vkDestroyDebugReportCallbackEXT": { 23746 "(VK_EXT_debug_report)": [ 23747 { 23748 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01242", 23749 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>callback</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 23750 }, 23751 { 23752 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01243", 23753 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>callback</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23754 }, 23755 { 23756 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-parameter", 23757 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle" 23758 }, 23759 { 23760 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parameter", 23761 "text": " <code>callback</code> <strong class=\"purple\">must</strong> be a valid <code>VkDebugReportCallbackEXT</code> handle" 23762 }, 23763 { 23764 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-pAllocator-parameter", 23765 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" 23766 }, 23767 { 23768 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parent", 23769 "text": " <code>callback</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>" 23770 } 23771 ] 23772 }, 23773 "vkCmdSetCheckpointNV": { 23774 "(VK_NV_device_diagnostic_checkpoints)": [ 23775 { 23776 "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-parameter", 23777 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" 23778 }, 23779 { 23780 "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-recording", 23781 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 23782 }, 23783 { 23784 "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-cmdpool", 23785 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations" 23786 } 23787 ] 23788 }, 23789 "vkGetQueueCheckpointDataNV": { 23790 "(VK_NV_device_diagnostic_checkpoints)": [ 23791 { 23792 "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-02025", 23793 "text": " The device that <code>queue</code> belongs to <strong class=\"purple\">must</strong> be in the lost state" 23794 }, 23795 { 23796 "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-parameter", 23797 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle" 23798 }, 23799 { 23800 "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointDataCount-parameter", 23801 "text": " <code>pCheckpointDataCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 23802 }, 23803 { 23804 "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointData-parameter", 23805 "text": " If the value referenced by <code>pCheckpointDataCount</code> is not <code>0</code>, and <code>pCheckpointData</code> is not <code>NULL</code>, <code>pCheckpointData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCheckpointDataCount</code> <code>VkCheckpointDataNV</code> structures" 23806 } 23807 ] 23808 }, 23809 "VkCheckpointDataNV": { 23810 "(VK_NV_device_diagnostic_checkpoints)": [ 23811 { 23812 "vuid": "VUID-VkCheckpointDataNV-sType-sType", 23813 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV</code>" 23814 }, 23815 { 23816 "vuid": "VUID-VkCheckpointDataNV-pNext-pNext", 23817 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23818 } 23819 ] 23820 } 23821 } 23822}